zoukankan      html  css  js  c++  java
  • 浏览器滚动条操作

    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)
  • 相关阅读:
    量子计算机算法与应用研究论文(转载务必注明出处)
    [置顶] html学习笔记,锚点,超链接,table布局,表头,h,sub,blockquote,ul,li,ol.dl,加入收藏,打印,弹出窗口
    [置顶] 第一天初试linux
    [置顶] Datalist嵌套datalist,页面传值,加密,数据绑定
    [置顶] asp.net(c#)中相对路径(虚拟路径)和物理磁盘路径的转换
    [置顶] c#对于文件的操作
    [置顶] 读取pdf并且在web页面中显示
    [置顶] gridview中嵌套gridview(并实现子gridview的数据绑定),页面传值,加密,数据绑定
    git的使用学习笔记--项目版本操作
    git的使用学习笔记---合并分支
  • 原文地址:https://www.cnblogs.com/lvchengda/p/12627161.html
Copyright © 2011-2022 走看看