- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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_element_by_xpath(/html
您可能关注的文档
最近下载
- 计算机操作系统(慕课版)期末考试卷及评分标准(共5套).docx VIP
- 第十讲中外会通与中华民族巩固壮大(明朝时期)-中华民族共同体概论专家大讲堂课件.pptx VIP
- 痛风的药物治疗.pptx
- 中华民族共同体概论课件专家版10第十讲 中外会通与中华民族巩固壮大(明朝时期).pdf VIP
- HX108-2_七管半导体收音机_实习报告.doc VIP
- 新外研版高二英语选择性必修三developing ideas课件(巴黎圣母院).pptx
- 民谣介绍PPT教程文件.ppt
- 青岛版六年级数学下册《总复习二 图形的位置与运动》教学课件PPT小学公开课.pptx
- 银行信用卡行业发展前景与机遇展望报告.docx
- 毕业论文:《小车倒立摆系统进行专家控制的Matlab仿真》.doc
文档评论(0)