Python+Selenium元素定位不到的问题及解决办法


在做Web自动化测试的时候经常会遇到元素定位不到的问题,结合实例总结一下原因和解决方法:

1.由于iFrame或者Frame的原因无法定位

实例:163邮箱登录页面,发现邮箱和密码的inputbox识别不到,登录btn也识别不到

初始脚本:

driver.find_element_by_name('email').send_keys("daisywang0726")
driver.find_element_by_name('password').send_keys("God1010andy")
driver.find_element_by_id('dologin').click()

 原因分析: 

查看页面发现是这三个元素是嵌入的iframe里边的,WebDriver只能识别一个页面中的元素,对于嵌入页面的元素是无法直接识别到的,如下图:

 解决方案:

当元素处于iframe中,需要先跳转到iframe中才能被识别,如下:

调用_switch_to.frame()跳转进iframe。

driver._switch_to.frame(0)
driver.find_element_by_name('email').send_keys("daisywang0726")
driver.find_element_by_name('password').send_keys("God1010andy")
driver.find_element_by_id('dologin').click()
driver._switch_to.default_content()#driver.switch_to.parent_frame()切换到上一层frame,driver.switch_to.derault_content()跳回到最外层页面

2.由于iFrame或者Frame的原因无法定位

原因:由于没有设置等待时间,想要定位的元素还没有加载出来,导致无法定位。

解决方法:Selenium提供三种等待方式来实现:

  • 强制等待sleep()
  • 隐式等待implicitly_wait()
  • 显示等待WebDriverWait()

详细实现方式请查看https://www.cnblogs.com/daisyatcnblog/p/12337092.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM