浏览器滚动条操作
Posted lvchengda
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浏览器滚动条操作相关的知识,希望对你有一定的参考价值。
1,设置滚动条距离顶部的位置
使用示例
js = "window.scrollTo(x,y) " x为水平拖动距离,y为垂直拖动举例 driver.execute_script(js) js= "var q=document.documentElement.scrollTop=n" n为从顶部往下移动滚动举例 driver.execute_script(js)
竖向滚动
from selenium import webdriver driver = webdriver.Chrome() driver.get(‘xxx‘) js = ‘var action=document.documentElement.scrollTop=10000‘ # 设置滚动条距离顶部的位置,设置为 10000, 超过10000就是最底部 driver.execute_script(js) # 执行脚本 js = ‘var action=document.documentElement.scrollTop=0‘ # 回到顶部 driver.execute_script(js) driver.quit()
2,使用js的scrollTo函数
from selenium import webdriver import unittest, time class TestDemo(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() def test_scroll(self): url = ‘http://www.seleniumhq.org/‘ try: self.driver.get(url) # 使用js的scrollTo函数和document.body.scrollHeight参数 # 将页面的滚动条滑动到页面的最下方 self.driver.execute_script(‘window.scrollTo(1000,document.body.scrollHeight);‘) # 使用js的scrollIntoView函数将遮挡的元素滚动到可见屏幕上 # scrollIntoView(true)表示将元素滚动到屏幕中间 # scrollIntoView(false)表示将元素滚动到屏幕底部 self.driver.execute_script("document.getElementById(‘choice‘).scrollIntoView(true);") self.driver.execute_script("document.getElementById(‘choice‘).scrollIntoView(false);") time.sleep(3) # 使用js的scrollBy方法,使用0和400横纵坐标参数, # 将屏幕向下滚动400像素 self.driver.execute_script(‘window.scrrollBy(0,400);‘) time.sleep(3) except Exception as e: print(e) def tearDown(self): self.driver.quit() if __name__ == ‘__main__‘: unittest.main()
3,根据页面显示进行变通,发送tab键
在本例中的页面中,密码是输入框,正常手工操作时,可以通过tab键会切换到密码框中,所以根据此思路,在python中也可以发送tab键来切换,使元素显示
from selenium.webdriver.common.keys import Keys
driver.find_element_by_id("id_login_method_0").send_keys(Keys.TAB)
4,横向滚动条
在web自动化中,不只只有纵向滚动条,可能还有横线滚动条
js ="window.scrollTo(100,400);"
driver.execute_script(js) # 第一个参数 x 是横向距离,第二个参数 y 是纵向距离
以上方法在 Firefox 上是可以的,但是用 Chrome 浏览器,发现不管用。谷歌浏览器就是这么任性,不听话,于是用以下方法解决谷歌浏览器滚动条的问题。
js = "var q=document.body.scrollTop=0"
driver.execute_script(js)
5,元素聚焦
虽然用上面的方法可以解决拖动滚动条的位置问题,但是有时候无法确定我需要操作的元素,这个时候我们可以先让页面直接跳到元素出现的位置,然后就可以操作了。同样需要借助 JS 去实现
target = driver.find_element_by_xxxx()
driver.execute_script("arguments[0].scrollIntoView();", target)
以上是关于浏览器滚动条操作的主要内容,如果未能解决你的问题,请参考以下文章