(十六)执行javascript
乙醇 创建于 over 7 years 之前
最后更新: less than a minute 之前
阅读数: 174
执行javascript
使用driver.executeScript(js)方法会在当前的定位上下文里执行相应的js脚本。
传参
executeScript方法支持向脚本中传入参数,所有参数的参数都可以在脚本中通过arguments
对象来引用。我们可以传入下列类型的参数:
- boolean
- number
- string
- WebElement:也就是我们定位到的页面对象
- Array或者是Object: 只要里面的每一项都是上面的类型就好了
返回值
同样的,我们可以接收js脚本的返回值,返回值有下面一些情况
- 如果js返回HTML元素,那么该元素会自动被封装成WebElement
- null 或者 undefined会被转成null
- boolean, number, string 不做转换
- function会被转成相应的字符串表示
- Array和Object中的每一项都按照上面的规则转换
目的
- 学会使用executeScript(js)方法
- 学会向js脚本中传参
- 学会从js脚本中接收返回值
场景
打开百度首页
- 先隐藏掉百度一下按钮
- 然后返回页面上所有导航链接的文本
- 最后把页面背景变成黑色
代码
var path = require('path');
var webdriver = require('selenium-webdriver'),
By = webdriver.By;
var url = "http://www.baidu.com/";
var dr = new webdriver.Builder().forBrowser('chrome').build();
dr.get(url)
// 先隐藏掉百度一下按钮
// 通过arguments[0]传入百度一下按钮
var hideBtn = "arguments[0].style.display='none';"
dr.executeScript(hideBtn, dr.findElement(By.id('su')));
// 然后返回页面上所有导航链接的文本
// 通过return返回需要的结果
var linkTexts = "return $('.mnav').text()"
dr.executeScript(linkTexts).then(function(texts) {
console.log(texts);
});
// 最后把页面背景变成黑色
dr.executeScript("document.body.style.backgroundColor='black'");
运行结果
浏览器
命令行输出
新闻hao123地图视频贴吧学术