JS在Selenium中的使用

JS在Selenium中的使用

 

前言:

         做Web自动化时,一般可利用Selenium定位页面元素进行如click,sendKeys类的操作。但也常遇到api没有调用错,却无

 法定位到元素,或者,无法进行操作。

        Fortunately,Selenium提供了操作JS的方法:execute_script(),可以直接执行js的脚本。

常用的js汇总如下:

一.  控制滚动条高度

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

execute_script 的参数描述
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模拟鼠标的行为

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值