某些特殊情况下,使用selenium的api无法操作页面元素,点击、滚动实现的某些功能,可以考虑通过执行js来完成。
为什么不用js写自动化?——selenium第一版是js写的,但js兼容性存在问题,所以引入webdriver 现在有用node.js做的cypress框架
一、方法解释:
executeScript(String script, Object... args);
第一个参数:script 脚本 在浏览器console里可直接输入的js语句
第二个参数:Object... args 可变参数 (0 - n)个; 把args的值传给前面js脚本,
参数可以是:定位到的定位方式/元素/属性...
1、使用方式1——不传参:Object... args为0
JavascriptExecutor jsExecutor=(JavascriptExecutor) driver;//这里也可以不用强转,因为多态
jsExecutor.executeScript("...");
2、使用方式2——传参:Object... args个数多个 从arguments[0]开始,arguments[1],arguments[2]......
3、举例:比如需要删除12306时间窗口的只读属性readonly
//把driver转换成js对象
JavascriptExecutor jsExexutor = drive