zoukankan      html  css  js  c++  java
  • python自动化之JS处理滚动条

    滚动条操作
    浏览器滚动条并没有提供相应的操作方法。在这种情况下,就可以借助JavaScript也就是JS来控制浏览器的滚动条。
    WebDriver提供了execute_script()方法来执行JavaScript代码。
    js="window.scrollTo(100,450);"
    driver.execute_script(js)
    当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的。
    这时候需要借助滚动条来拖动屏幕,使被操作的元素显示在当前的屏幕上。
    滚动条是无法直接用定位工具来定位的。selenium里面也没有直接的方法去控制滚动条,这时候只能借助JS了,还好selenium提供了一个操作js的方法:
    execute_script(),可以直接执行js的脚本。
    --scrollHeight 获取对象的滚动高度。
    --scrollLeft 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离。
    --scrollTop 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离。
    --scrollWidth 获取对象的滚动宽度。

    代码参考:python自动化之JS处理滚动条

    # coding:utf-8
    from time import sleep
    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com")
    print(driver.name)
    
    # 滚动到底部
    js = "window.scrollTo(0,document.body.scrollHeight)"
    driver.execute_script(js)
    
    # ## 回到顶部
    # def scroll_top():
    #     if driver.name == "chrome":
    #        js = "var q=document.body.scrollTop=0" # Chrome浏览器不管用的话,可以这样试试
    #     else:
    #         js = "var q=document.documentElement.scrollTop=0"
    #     return driver.execute_script(js)
    
    # 滚动到顶部
    js = "window.scrollTo(0,0)"
    driver.execute_script(js)
    sleep(5)
    
    # 滚动到底部
    js="var q=document.documentElement.scrollTop=10000"
    driver.execute_script(js)
    sleep(5)
    
    # 聚焦元素
    target = driver.find_element_by_link_text("hao123")
    driver.execute_script("arguments[0].scrollIntoView();", target)
    sleep(3)
    driver.quit()

    关注公众号:Python爬虫数据分析挖掘,免费获取更多开源项目源码

    耐得住寂寞,才能登得顶
    Gitee码云:https://gitee.com/lyc96/projects
  • 相关阅读:
    tableviewCell折叠状态1
    iOS中--NSArray调用方法详解 (李洪强)
    NSNumber的使用
    Fedora13下编译busybox-1.15.0出现can not find lcrypt错误
    【独立开发人员er Cocos2d-x实战 013】Cocos2dx 网络编程实战之星座运势
    JAVA序列化的作用
    我买网B轮融资成功,五周年豪掷千万回馈会员
    一步步教你搭建TinyOS2.1.2开发环境
    POJ2947 DAZE [Gauss]
    慢慢理解RESTful架构
  • 原文地址:https://www.cnblogs.com/chenlove/p/13611124.html
Copyright © 2011-2022 走看看