javascript - Selenium Java 注入(inject)新的 Javascript 函数

标签 javascript java selenium

我有一个要在页面加载后添加的动态函数。我需要这样做,因为函数名称取决于我在解析 HTML 后得到的一些变量。现在我已经这样做了:

规范:我正在使用 selenium 3.3.1 和 PhantomJS 1.9.8

((JavascriptExecutor) driver).executeScript(" eval('function getVoteX1() { return 1; }')");
String testScript = (String)((JavascriptExecutor) driver).executeScript(" getVoteX1()");
System.out.println(testScript);

但是当我运行它时,它会抛出错误:

引起:org.openqa.selenium.WebDriverException: {"errorMessage":"Can't find variable: getVoteX1","re​​quest":{"

注意:最终,getVoteX1 将被其他变量替换,但为简单起见,我首先尝试了一个静态名称。

最佳答案

将新函数分配给 window 对象,即 equivalent to defining a global variable :

((JavascriptExecutor) driver).executeScript("window.getVoteX1 = function() { return 1; }");
String testScript = (String)((JavascriptExecutor) driver).executeScript(" getVoteX1()");

关于javascript - Selenium Java 注入(inject)新的 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48256572/

相关文章:

java - 具有 imageButton 随机值的自定义 SimpleCursorAdapter

java - 预加载网页 View

javascript - Highcharts 工具提示 backgroundColor 继承自悬停元素

java - 从带有 ClassTag 的 Java Play Framework 调用 Scala

java - Selenium - chrome 驱动程序无法在后台启动(没有启动窗口)

python - 如何在 Python 中使用 Chrome 关闭 Selenium 中的命令行日志记录

java - 我已经导入了 org.openqa.selenium.interactions.Actions 但仍然抛出错误 Actions can not parsed to a variable

javascript - 在 JSON 对象上使用 stringify 以在 HTML 数据属性中使用

javascript - Ember.js (v 1.13) - 从组件切换按钮的 CSS 类

javascript - jQuery idSelector.bind() 方法不能正常工作