在Selenium操作中js脚本
在进行自动化测试的测试时遇到了这个报错信息
经过一番百度之后意识到是图层遮挡的问题
Selenium可以切换iframe却不可以操作页面图层(可能是我不会吧)
但是却找到了js操作网页图层的方法
然后刚好想到Selenium中可以运行js脚本片段(这就很搭了(?ω?))
错误信息:
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element ... is not clickable at point (580, 40). Other element would receive the click:
(Session info: chrome=74.0.3729.131)
(Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Windows NT 10.0.16299 x86_64)
1.Selenium定位的元素被图层遮挡了的解决办法
针对遮挡问题
# 定位到要操作的元素 el = driver.find_element_by_css_selector('[class="prefpanelgo"]') #代码如下就点击到点击到定位的元素了 driver.execute_script("arguments[0].click();", el)
# 一般图层就是点击用,要做其他的话就把click方法和元素对象删除了就可以吧(我猜的)
# arguments[0]应该就是切换到最上层的图层(没错也是我猜哒!)
相当好用,因为直接注入js脚本,就不是在屏幕上操作了,而是js操作,神级操作啊
2.Selenium中写js进行页面的下滑操作
# x是水平方向,y是垂直方向单位是像素px js = 'window.scrollTo(0,1000)' driver.execute_script(js)
3.Selenium中写js让页面向上滑动
# scrollTop=800就是滑动块距离顶部的距离值px # scrollTop=0就是回到顶部 js = 'var q=document.documentElement.scrollTop=800' driver.execute_script(js)
遇到问题的时候就说明你要学习了!加油,在秃头之路上越走越远!!