zoukankan      html  css  js  c++  java
  • Selenium(十三)调用js,控制浏览器的滚动条

        WebDiver 不能操作本地 Windows 控件,但对于浏览器上的控件也不是都可以操作的。比如浏览器的滚动条,虽然 WebDriver 提供操作浏览器的前进和后退按钮,但对于滚动条并没有提供相应用的方法。
    那么在这种情况下就可以借助 JavaScript 方法来控制浏览器滚动条。WebDriver 提供了 execute_script()方法来执行 JavaScript 代码。

    一般用到操作滚动条的会两个场景:

    • 注册时的法律条文的阅读,判断用户是否阅读完成的标准是:滚动条是否拉到最下方。
    • 要操作的页面元素不在视觉范围,无法进行操作,需要拖动滚动条。


    用于标识滚动条位置的代码

    ……
    <body onload= "document.body.scrollTop=0 ">
    <body onload= "document.body.scrollTop=100000 "> ……

    document.body.scrollTop

    scrollTop 设置或获取滚动条与最顶端之间的距离。如果想让滚动条处于顶部,那么可以设置 scrollTop 的值为 0,如果想让滚动条处于最底端,可以将这个值设置的足够大,大个窗口的高度即可。scrollTop 的值以像素为单位。

    #coding=utf-8
    from selenium import webdriver
    import time
    #访问百度
    driver=webdriver.Firefox()
    driver.get("http://www.baidu.com")
    
    #搜索
    driver.find_element_by_id("kw").send_keys("selenium")
    driver.find_element_by_id("su").click()
    time.sleep(3)
    
    #将页面滚动条拖到底部
    js="var q=document.documentElement.scrollTop=10000"
    driver.execute_script(js)
    time.sleep(3)
    
    

    #将滚动条移动到页面的顶部
    js_="var q=document.documentElement.scrollTop=0"
    driver.execute_script(js_)
    time.sleep(3)

    #将滚动条移动到页面的中间
    js_="var q=document.documentElement.scrollTop=500"
    driver.execute_script(js_)
    time.sleep(3)

    driver.quit()

    通过浏览器打开百度进行搜索,搜索的一屏无法完全显示将会出现滚动条。这个时候就可以通过
    JavaScript 代码控制滚动条在任意位置,需要改变的就是 scrollTop 的值。通过 execute_script()方法来执行这段 JavaScript 代码。

  • 相关阅读:
    偶感
    数据库脚本开发中应注意的事项
    事务与隔离级别笔记
    Spring MVC学习笔记
    Eclipse环境配置与快捷命令
    告别2016,展望2017
    待总结项
    常见问题汇总
    我的工具箱
    精品文章收藏
  • 原文地址:https://www.cnblogs.com/dydxw/p/10563815.html
Copyright © 2011-2022 走看看