解决Selenium弹出新页面无法定位元素问题.docx

解决Selenium弹出新页面无法定位元素问题.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
解决Selenium弹出新页面无法定位元素问题要点

解决Selenium弹出新页面无法定位元素问题  问题来源  一般来说,我们进行自动化登录,之后想直接进行对图书的续约操作,但是利用元素定位的方法,怎么都找不到元素,我一直以为是我的规则用的不对,导致元素找不到,其实,只是窗口句柄还停留在上一个页面而已!对于新弹出的页面还没有定位!!!那怎么可能找得到在新页面的元素呢!!这是新手(我)犯下最大的错误,只顾于对元素方法的定位,却没有意识到页面发生跳转后的handles的变化。  请看测试;#coding=utf-8from selenium import webdriverimport timebrowser=webdriver.Firefox()browser.get()browser.find_element_by_id(kw).send_keys(selenium)browser.find_element_by_id(su).click()time.sleep(3)sreach_window=browser.current_window_handle //此行代码用来定位当前页面browser.find_element_by_xpath(/html/body/div[3]/div[4]/div/div[3]/div[4]/h3/a).click()time.sleep(5)  当然如果我一点都不改,也是进行不了测试的,这位大哥把注释符号写错了,不是//,而是#啊大哥  ok,然后运行下:出错了  所以我感到好奇的是,这位大哥到底有没有跑过这段代码,看着原创的样子应该没有抄袭才对啊,那应该是测试过代码才对,但是可重复性在哪?最后发现需要修改http成这样才能访问(大哥少加个/):  browser.get(/)修改后代码如下:#coding=utf-8from selenium import webdriverimport timebrowser=webdriver.Firefox()browser.get(/)browser.find_element_by_id(kw).send_keys(selenium)browser.find_element_by_id(su).click()time.sleep(1)sreach_window=browser.current_window_handle #此行代码用来定位当前页面time.sleep(2)browser.find_element_by_xpath(/html/body/div[3]/div[3]/div/div[3]/div[4]/h3/a).click()#我这里修改了一下div[4],大哥的索引直接到有道翻译了,不利于下一步测试time.sleep(1)  ok,这次能正常索引到值,但是!!!我要说的是但是!!!  这根本没有跳转页面!还是在同一个页面进行操作的!如果我把大哥的代码改成:  在我测试的时候,发生了奇怪的事情,同样的代码,有时候能跑有时候抛出错误,我已设定休眠时间,难道是我频繁访问导致百度封我?刚才上述的代码我都实际测试过的,但是现在又不能用了--wtf--,所以。我换了稳定的引擎,我采用bing有哪些信誉好的足球投注网站来试试,上面的全部作废,如果有人知道问题出在哪,请留言  7.19补充  应该是有哪些信誉好的足球投注网站引擎热点的问题,每次键入相同的值可能有哪些信誉好的足球投注网站结果首项会不一致的,百度可能更新热点比较快把,所以出现了我所谓不稳定的情况  正题测试  我和上述那位大哥不同的观点在于,他用的  sreach_window=browser.current_window_handle  方法并不能实现对新窗口句柄的捕捉,我以bing主页为测试页,重新构造了一下,#coding=utf-8from selenium import webdriverimport timebrowser=webdriver.Firefox()browser.get(/)keywords = MrLevo520 CSDNsend_keywords=keywords.decode(utf-8)#中英混输入可防止乱码browser.find_element_by_id(sb_form_q).send_keys(send_keywords)time.sleep(1)#----------操作一:进行对关键字MrLevo520 CSDN有哪些信誉好的足球投注网站----------------browser.find_element_by_id(sb_form_go).click()#执行此操作会进行有哪些信誉好的足球投注网站,但是没有弹出新窗口,所以句柄不用重定位time.sleep(3)#----------操作二:对有哪些信誉好的足球投注网站页面我的CSDN进行点击操作--------------browser.find_elemen

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档