​selenium中元素定位正确但是操作失败,6种解决办法全稿定

selenium中元素定位正确但是操作失败的原因无外乎以下4种:

一、页面没加载好

解决方法:添加等待方法,如: time.sleep()

二、页面提交需要等待给数据后台

解决方法:添加等待方法,如: time.sleep()

三、浏览器没有以最大化方式打开,导致元素被隐藏,定位不到

解决方法:将网页最大化:driver.maximize_window()
如果屏幕比例固定,分辨率有限,通过网页最大化也没办法解决的话,可以通过执行JS方法来实现。

browser.execute_script(‘window.scrollBy(200,0)’) #此处(200,0)为网页偏移坐标,200为横坐标,0为纵坐标

四、网页中存在多个frame框架,所定位的元素不在当前frame中。

所以尽管元素明明看起来是定位正确的,但是点击无效。

1.如何对frame进行切换?

driver.switch_to.frame(reference)   #reference是传入的参数,用来定位frame元素

2.如何从子frame切换回主文档?

driver.switch_to.default_content()

3.多层frame如何切换?

图片[1] - ​selenium中元素定位正确但是操作失败,6种解决办法全稿定 - 正则时光
#(1)从主文档切换到frame 2:
driver.switch_to.frame(‘frame1’) #先从主文档切换到frame1
driver.switch_to.frame(‘frame2’) #再从frame1切换到frame2
#(2)从frame2切回到frame1:
driver.switch_to.parent_frame()  # 如果当前已是主文档,则无效果

五、元素属性为动态属性,看着定位已经正确,但是随着鼠标点击位置不同,元素的属性发生变化。

例如下面这个页面的目录的class属性就随着该元素是否被点击而发生变化:

解决方法:换元素的另一个固定属性来进行定位。

图片[2] - ​selenium中元素定位正确但是操作失败,6种解决办法全稿定 - 正则时光

六、页面元素在页面打开的时候被其他弹出窗口挡住。

解决方法:添加关闭弹出窗口步骤。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享