原文地址https://blog.csdn.net/galen2016/article/details/56847545

【WebDriver】调用JavaScript

一、WebDriver 提供了executeScript方法来执行JavaScript 代码,从而对页面元素做一些特殊操作

代码:

  1. ……
  2. WebDriver driver = new FirefoxDriver();
  3. JavascriptExecutor js = (JavascriptExecutor) driver;
  4. js.executeScript(String script, object... args);
  5. ……
第一行先new一个WebDriver,第二行将Webdriver强制转换为JavascriptExecutor,第三行执行js,参数script是要执行的js语句,后面的参数可以没有,也可以有1个或者多个。

二、调用js实例
1、拖动页面滚动条
  1. ……
  2. JavascriptExecutor js = (JavascriptExecutor) driver;
  3. js.executeScript("window.scrollTo(100,450);");
  4. ……
window.scrollTop()方法用于设置浏览器窗口滚动条的水平和垂直位置。方法的第一个参数表示水平的左间距,第二个参数表示垂直的上边距。
2、弹出alert
  1. ……
  2. JavascriptExecutor js = (JavascriptExecutor) driver;
  3. js.executeScript("alert('Hello world!');");
  4. ……
3、向页面中textarea 文本框输入内容
如这个html:

  1. ……
  2. <textarea id="id" style="width: 98%" cols="50" rows="5" class="txtarea">
  3. </textarea>
  4. ……
Java代码:
  1. ……
  2. String areaText= "Hello World";
  3. String js = "var sum=document.getElementById('id'); sum.value='" + areaText+ "';";
  4. ((JavascriptExecutor)driver).executeScript(js);
  5. ……
4、点击某个元素
  1. ……
  2. //第一种方法
  3. JavascriptExecutor js = (JavascriptExecutor) driver;
  4. js.executeScript("window.document.getElementById('id').click()";
  5. //第二种方法
  6. WebElement element = driver.findElement(By.id("id"));
  7. js.executeScript("arguments[0].click()", element);  //这里的auguments[0]就代表element
  8. ……
5、改变元素的属性

上图中的月份未选中选择时class为“bs_times_month”,点击某个月份后它的class会变为
“bs_times_monthBlue bs_times_monthSelected”。我们可以用js直接设置想要选中月份的class,就不用点击了。
代码:
  1. ……
  2. List<WebElement> months = driver.findElements(By.className("bs_times_month"));
  3. JavascriptExecutor js = (JavascriptExecutor)driver;
  4. js.executeScript("arguments[0].setAttribute('class',arguments[1])",months.get(3),"bs_times_monthBlue bs_times_monthSelected");
  5. ……

webdriver js点击无法点击的元素的更多相关文章

  1. vue.js之获取当前点击对象(其实是套着vue的原生javascript吧,笑😊)

    转载请注明出处:http://www.cnblogs.com/meng1314-shuai/p/7455575.html 熟悉jquery的小伙伴应该都知道jquery获取当前点击对象是有多么的粗暴, ...

  2. js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题

    js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题 js模拟form表单提交数据源码: /** * js模拟form表单提交 * @param ...

  3. 怎么用js设置a标签点击链接改变当前颜色

    怎么用js设置a标签点击链接改变当前颜色 20 例如:多个a标签为白色,当点击其中一个a标签时改变那一个a标签的字体颜色为黄色,并且跳转到对应链接,当点击下一个a标签链接时,下一个为黄色,之前一个恢复 ...

  4. js去掉浏览器右键点击默认事件(+vue项目开启右键行为)

    js去掉浏览器右键点击默认事件 1.阻止整个页面所有的右击事件 document.oncontextmenu = function(){ return false;} 2.特定的区域/元素 docum ...

  5. 基于js原生封装的点击显示完整文字

    基于js原生封装的点击显示完整文字 (function(window) { var inner = ''; var showCont_s = function(ele) { this.init.app ...

  6. js最简单的-点击小图放大

    js最简单的-点击小图放大 标签(空格分隔): js <html> <body> <img class="imgview" src="{$v ...

  7. js如何实现动态点击改变单元格颜色?

    js如何实现动态点击改变单元格颜色? 一.总结 1.通过table的rows属性,遍历表格所有行,然后通过cells属性,遍历每一行中的单元格. 2.遍历的过程中,动态的为每一个单元格定义单击事件,改 ...

  8. 使用原生JS,实现鼠标点击爱心效果 !!!

    使用原生JS,实现鼠标点击爱心效果 !!! 引言: 在很多时候我们都需要实现鼠标点击出现图案或者文字这样的效果,对于用户而言,这样的体验是很极致的.其实实现起来也很简单,下面一起来学习一下吧.文末附上 ...

  9. android selector 背景选择器的使用, button (未点击,点击,选中保持状态)效果实现

              android selector 背景选择器的使用, button (未点击,点击,选中保持状态)效果实现 首先看到selector的属性: android:state_focus ...

  10. (79)【按键】[独立按键] - 1: 单击,双击,三击以及N击

    此按键程序的实现的功能是单个独立按键的[单击],[长按],[双击],[三击]以及[多击].本文分为三个部分, 第一个部分是说[单击],[长按]的程序: 第二部分是讲[双击]: 第三部分是讲[三击],[ ...

随机推荐

  1. Linux中的SELinux详解--16

    SELinux 宽容模式(permissive) 强制模式(enforcing) 关闭(disabled)  几种模式之间的转换 在CentOS6.2 中安装intel 的c++和fortran 的编 ...

  2. 移植opencv到pcDuino

    OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Pytho ...

  3. 超全面的JavaWeb笔记day04<dom树等>

    1.案例:在末尾添加节点(*****) 创建标签 createElement方法 创建文本 createTextNode方法 把文本添加到标签下面 appendChild方法 2.元素对象(了解) 如 ...

  4. swift学习笔记之控制流

    控制流: 1.if语句 let count = { print("yes") }else{ print("no") } 2.switch语句 (1)Swift中 ...

  5. com.thoughtworks.xstream.converters.ConversionException

    使用webService调用接口,返回的是xml格式,运用xstream解析的时候,出现了如下的错误: Exception in thread "Timer-1" com.thou ...

  6. weblogic11g重置控制密码

    Reset the AdminServer Password in WebLogic 11g and 12c If you forget the AdminServer password for yo ...

  7. C++新式转型

    本文对四种标准C++的类型转换符:static_cast.dynamic_cast.reinterpret_cast.和const_cast进行了介绍,通过本文应当能够理解这四个类型转换操作符的含义. ...

  8. 【转】DevOps的前世今生

    转自:http://www.infoq.com/cn/news/2016/09/learn-devops-from-reports 目前在国外,互联网巨头如Google.Facebook.Amazon ...

  9. 【BZOJ2007】[Noi2010]海拔 对偶图最短路

    [BZOJ2007][Noi2010]海拔 Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作 一个正方形,每一个区域也可看 ...

  10. 【BZOJ1269/1507】[AHOI2006]文本编辑器editor Splay

    [BZOJ1269][AHOI2006]文本编辑器editor Description 这些日子,可可不和卡卡一起玩了,原来可可正废寝忘食的想做一个简单而高效的文本编辑器.你能帮助他吗?为了明确任务目 ...