0


selenium操作下拉滚动条方法汇总

selenium操作下拉滚动条方法汇总

UI自动化中经常会遇到元素识别不到,找不到的问题,原因有很多,比如不在iframe里,xpath或id写错了等等;但有一种是在当前显示的页面元素不可见,拖动下拉条后元素就出来了。


方法一 使用js脚本直接操作

这里的id为滚动条的id,但js中没有xpath的方法,所以滚动条没有id的网页此方法不适用

js="var q=document.documentElement.scrollTop=10000"# 滚动到最下面
js="var q=document.documentElement.scrollTop=0"# 滚动到最上面
driver.execute_script(js)

方法二 使用js脚本拖动到提定地方

这个方法可以将滚动条拖动到需要显示的元素位置

target = driver.find_element_by_id("id_keypair")

driver.execute_script("arguments[0].scrollIntoView();", target)# 拖动到可见的元素去

方法三 根据页面显示进行变通,发送tab键

在本例中的页面中,密码是输入框,正常手工操作时,可以通过tab键会切换到密码框中,所以根据此思路,在python中也可以发送tab键来切换,使元素显示

from selenium.webdriver.common.keys import Keys

driver.find_element_by_id("id_login_method_0").send_keys(Keys.TAB)

方法四 鼠标移动到目标元素上方

from selenium.webdriver.common.action_chains import ActionChains
 
ActionChains(self.driver).move_to_element(element).perform()# 将鼠标移动到目标元素上方,适用于当前页面元素已加载完毕,但是在屏幕中看不到的情况。

方法五 滚动条操作

这个方法是从当前位置向下滚动100像素,而 window.scrollTo(0,100) 这个方法是从0滚动到100像素,这两个方法都是滚动操作,但是后面这个只会从0像素滚动到100像素,除非修改数值才可以滚动到对应像素位置,而我使用的则会一直向下滚动,希望不要弄混淆了。

defxh():
   t =True
   time.sleep(1)while t:
      driver.execute_script("window.scrollBy(0,1000)")try:
         driver.find_element('link_text','没有更多推荐了,返回首页').click()
         time.sleep(1)
         t =Falseexcept:
         xh()if __name__ =='__main__':
   driver = webdriver.Chrome()
   driver.get("https://blog.csdn.net/sily_z/article/details/80733267")
标签: selenium

本文转载自: https://blog.csdn.net/feiyu68/article/details/120928895
版权归原作者 feiyu68 所有, 如有侵权,请联系我们删除。

“selenium操作下拉滚动条方法汇总”的评论:

还没有评论