在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)

遇到问题的时候就说明你要学习了!加油,在秃头之路上越走越远!!