码迷,mamicode.com
首页 > 其他好文 > 详细

浏览器滚动条操作

时间:2020-04-03 16:28:24      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:demo   元素   exe   element   无法   坐标   使用   web   main   

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)

浏览器滚动条操作

标签:demo   元素   exe   element   无法   坐标   使用   web   main   

原文地址:https://www.cnblogs.com/lvchengda/p/12627161.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!