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

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

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
解决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)

130****9768 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档