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)从主文档切换到frame 2:
driver.switch_to.frame(‘frame1’) #先从主文档切换到frame1
driver.switch_to.frame(‘frame2’) #再从frame1切换到frame2
#(2)从frame2切回到frame1:
driver.switch_to.parent_frame() # 如果当前已是主文档,则无效果
五、元素属性为动态属性,看着定位已经正确,但是随着鼠标点击位置不同,元素的属性发生变化。
例如下面这个页面的目录的class属性就随着该元素是否被点击而发生变化:
解决方法:换元素的另一个固定属性来进行定位。
六、页面元素在页面打开的时候被其他弹出窗口挡住。
解决方法:添加关闭弹出窗口步骤。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END