selenium模拟登录页面时遇到的问题

1. 错误:    当遇到Selenium定位不到元素时出现(报:NoSuchElementException)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {“method”:”name”,”selector”:”title”} 

 

分析原因: 
1.Frame/Iframe原因定位不到元素(这个是最常见的原因,由于frame中镶嵌iframe导致定位元素失败,首先需要理解的是iframe相当于对本页面的一个重定向操作,因此当遇到iframe时其实是已经跳转到另一个页面,对当前页面的定位当然也就无效)。 解决办法: 
#先定位到iframe 
iframe = self.driver.find_element_by_xpath(‘//*[@id=”iframe_box”]/div[2]/iframe’) 
#再将定位对象传给switch_to_frame()方法 
self.driver.switch_to.frame(iframe) 
接下来按照正常的页面定位就ok,完美解决。 
2.Xpath描述错误原因:如果你是用xpath定位而你得页面没有使用iframe的时候, 你可能需要重新检查一下你的xpath是否有错误,由于Xpath层级太复杂,容易犯错,手写xpath一定要格外小心,不过我们浏览器有自带的获取xpath 的方法,比如QQ浏览器F12进入调试模式,找到要定位的代码右键COPY就可以看到copyXpath的选项,其它浏览器获取xpath方式可以百度一下用起来很方便。 
3.页面还没有加载出来,就对页面上的元素进行操作也会导致获取不到元素定位,解决办法 
import time 
time.sleep(3) 
加入等待时间,这种方式属于强制等待,用起来不灵活,其它的等待方式还有隐性等待implicitly_wait(X)显性等待WebDriverWait。关于它们的区别参考http://www.jb51.net/article/92684.htm 这里不再多说。 
4.动态id定位不到元素: 
解决方案: 
如果发现是动态id,直接用xpath定位或其他方式定位。 
定位动态id链接: 
http://blog.csdn.net/huilan_same/article/details/52594354
 

2. 错误:   DeprecationWarning: use driver.switch_to.frame instead 
warnings.
warn(“use driver.switch_to.frame instead”, DeprecationWarning)

原因:这类型的警告大多属于版本更新时,所使用的方法过时的原因,可以在该方法的说明处查找替换的方法 

解决:这样的警告说明switch_to_frame方法已经被拆分 ,将它改成switch_to.frame,完美解决。
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值