zoukankan      html  css  js  c++  java
  • selenium常用操作之JS处理滚动条操作

      selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了。

    常见场景:

    当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的。

    这时候需要借助滚动条来拖动屏幕,使被操作的元素显示在当前的屏幕上。

    滚动条是无法直接用定位工具来定位的。selenium里面也没有直接的方法去控制滚动条,

    这时候只能借助JS了,selenium当中可以用execute_script()方法执行js的脚本。

    语句:

    execute_script("arguments[0].scrollIntoView();",target)

    execute_script("JS语句"

    其中target为find_element_by_xx及我们要定位的元素。

    所以滚动额步骤是:

    1.通过selenium的定位元素方法找到该元素

    2.通过执行JS脚本,将元素滚动到可见区域。

    示例代码:

    #定位要操作的元素
    target_ele=driver.find_element_by_id("su")
    #将元素滚动到可见区域
    driver.excute_script("arguments[0].scrollIntoView();",target_ele)

    几种滚动方式如下:

    1.移动元素target_ele对象的顶端与当前窗口的顶部对齐:

    driver.excute_script("arguments[0].scrollIntoView();",target_ele)
    #或
    driver.excute_script("arguments[0].scrollIntoView(true);",target_ele)

    2.移动元素target_ele对象的底端与当前窗口的底部对齐:

    driver.excute_script("arguments[0].scrollIntoView(false);",target_ele)

    3.移动到页面底部

    driver.execute_script("windows.scrollTo(0,document.body.scrollHeight)")

    js="var q=document.getElementById('su').scrollTop=10000"
    driver.execute_script(js)

    4.移动到页面顶部

    driver.execute_script("windows.scrollTo(document.body.scrollHeight,document.body.scrollHeight)")
    

    js="var q=document.getElementById('su').scrollTop=0"
    driver.execute_script(js)
    

      

    5.横向滚动条

    有时候浏览器页面需要左右滚动(一般屏幕最大化后,左右滚动的情况已经很少见了)。

    driver.execute_script("windows.scrollTo(100,400)")#第一个参数100是横向距离,第二个参数400是纵向距离

    除了滚动的方式操作滚动条在某些特殊页面可以用tab键来切换焦点定位到元素,这个时候我们就可以用键盘的tanb键来实现定位。

    示例代码:

    from selenium.webdriver.common.keys import Keys
    driver.find_element_by_id("id_login_method_0").send_keys(Keys.TAB)
    

      

  • 相关阅读:
    linux下编译sphinx拓展
    Java为什么使用连接池
    内部类之.this&&.new
    何为代理
    Qt install Phonon
    Gcc简介与常用命令
    Vim的设置和使用——编程者
    QT程序启动界面的使用
    slide from one widget to another
    Hide the common top menu in Ubuntu 12.04
  • 原文地址:https://www.cnblogs.com/123blog/p/12486828.html
Copyright © 2011-2022 走看看