zoukankan      html  css  js  c++  java
  • [总结]JS在Selenium中的使用

    前言:做Web自动化时,一般可利用Selenium定位页面元素进行如click,sendKeys类的操作。但也常遇到api没有调用错,却无法定位到元素,或者,无法进行操作。Fortunately,Selenium提供了操作JS的方法:execute_script(),可以直接执行js的脚本。常用的js汇总如下:

    一.  控制滚动条高度

    问题:需要定位的元素没有在当前页面显示,无法定位,需要上下滑动滚动条才可以看到

    --scrollHeight 获取对象的滚动高度。 
    --scrollLeft 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离。 
    --scrollTop 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离。 
    --scrollWidth 获取对象的滚动宽度。

    #滚动到底部
    js = "window.scrollTo(0,document.body.scrollHeight)" 
    #滚动到顶部
    js = "window.scrollTo(0,0)" 

    #横向滚动

    1.滚动条左右滚动(一般屏幕最大化后,很少出现此种情况)

    2.通过坐标控制横向和纵向滚动条scrollTo(x, y)

    js = "window.scrollTo(100,200);"

    备注:scrollTo方法无浏览器兼容问题,可以通用,但其他的方法有兼容性区别,如:

    1.针对chrome, js = "var q=document.body.scrollTop=0"

    2.除chrome其他浏览器,js = "var q=document.documentElement.scrollTop=0"

    二.  控制内嵌滚动条高度

    问题:在内嵌网页或文本中有滚动条

    上下左右滚动

    js='document.getElementById("div_id").scrollTop=0’

    js='document.getElementById("div_id").scrollTop=10000’

    js='document.getElementById("div_id").scrollLeft=0

    js='document.getElementById("div_id").scrollLeft=10000’

    .日历控件readonly属性

    问题:日历控件存在readonly="readonly"时,无法用Sendkeys输入日期

    1.方法:先删除readonly属性,再clear,然后输入

    js = 'document.getElementById("date").removeAttribute("readonly");'

    2.方法:用js方法输入日期

    js2 = 'document.getElementById("date").value="2018-07-20"'

    driver.execute_script(js2)

     

    ----如果js还是无法滑动滚动条的话,考虑用鼠标操作,ActionChains模拟鼠标的行为

  • 相关阅读:
    bzoj1015星球大战(并查集+离线)
    bzoj1085骑士精神(搜索)
    bzoj1051受欢迎的牛(Tarjan)
    左偏树学习
    hdu1512 Monkey King(并查集,左偏堆)
    左偏树(模板)
    PAT (Basic Level) Practice (中文) 1079 延迟的回文数 (20分) (大数加法)
    PAT (Basic Level) Practice (中文) 1078 字符串压缩与解压 (20分) (字符转数字——栈存放)
    PAT (Basic Level) Practice (中文) 1077 互评成绩计算 (20分) (四舍五入保留整数)
    PAT (Basic Level) Practice (中文) 1076 Wifi密码 (15分)
  • 原文地址:https://www.cnblogs.com/hazelrunner/p/9340155.html
Copyright © 2011-2022 走看看