学习selenium的时候经常用扫的定位方式WebDriver定位方式,但是一些Windows的窗口就无力了,这时候可以用js定位
使用js定位的时候是用DOM树定位方式
eg:
document.getElementById("su");
这里就可以看出来,和浏览器中的console控制台的定位方式一样样的——果然知识都是相通的
接下来就是正题:
selenium中执行js脚本:
第一步首先强转成JavascriptExcetor:
JavaScriptExecutor js = (JavascriptExecutor) driver;
然后用此JavascriptExcetor对象调用js定位的方法
举例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
// 设置日期控件的读写属性 ((JavascriptExecutor) driver).executeScript( "document.getElementById(\"fromDate\").readOnly=false" ); // 直接为日期控件强行赋值 JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript( "document.getElementById('fromDate').setAttribute('value','2013-06-21');" ); // 富文本编辑框的处理 driver.switchTo().frame( "ueditor_0" ); JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript( "document.body.innerHTML='ABCDEFG'" ); //js模拟点击 JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript( "arguments[0].click();" ,driver.findElement(By.id( "su" ))); //滚动条操作 JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript( "document.documentElement.scrollTop=1500" ); //元素赋值 document.getElementById( 'HD_CheckIn' ).value= 'zhangsan' ; //日期类型元素赋值 JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript( "arguments[0] .value=‘2016-04-20';" ,driver.findElement(By*****))); |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://www.cnblogs.com/lybolg/p/7263122.html