javascript - 如何在 Firefox 上使用 Java WebDriver 中的 js 变量

标签 javascript java selenium selenium-webdriver

主要目标是将 javascript 元素 authKey 放入 Java 代码中。 这是代码:

index.html:

...
      <script type="text/javascript">

        var params = {
            authKey: "abc"
        };

        Main.init("#content", params);
    </script>
...

主要.java:

    public static void main(String[] args) throws InterruptedException {

        WebDriver d = new FirefoxDriver();
        d.get("***/index.html");
   //     System.out.println(" var " + d.findElement(By.xpath("/html/body/script[3]")));
        Thread.sleep(3000);
        JavascriptExecutor jse = (JavascriptExecutor) d;
//        System.out.println(jse.executeAsyncScript("document.URL"));
        Object val = jse.executeScript("return params.authKey;");
        d.quit();
    }

我总是得到类似的东西:

Exception in thread "main" org.openqa.selenium.JavascriptException: ReferenceError: **params is not defined**
Build info: version: '3.0.1', revision: '1969d75', time: '2016-10-18 09:49:13 -0700'
System info: host: 'Mikhails-MacBook-Pro.local', ip: '10.10.20.139', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.6', java.version: '1.8.0_111'
Driver info: org.openqa.selenium.firefox.FirefoxDriver

我已经尝试了不同的方法来获取这个 authKey 参数,没有返回,作为函数,但仍然没有...有人可以帮忙吗?

提前致谢。

更新: 解决方案https://stackoverflow.com/a/40936063/6809155有效,但仍在寻找 native js 解决方案以准确获取 params.authKey 参数,因为将来可能会有很多参数。

最佳答案

存在范围问题,具体取决于 Firefox 的版本。可能是您的变量在 window.wrappedJSObject 中被沙盒化了。

试试这个:

Object val = jse.executeScript(
  "return (window.params || window.wrappedJSObject.params).authKey;");

关于javascript - 如何在 Firefox 上使用 Java WebDriver 中的 js 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40934710/

相关文章:

java - 错误膨胀类 com.android.internal.widget.ActionBarContainer

python - 如果按钮只有类型和值,如何使用 Python 在 Web 表单上提交数据

javascript - 重写 nsIWindowWatcher 组件

javascript - 无法使用方法 : browser. click 和 xpath://input[2] 单击元素

java - java中遍历空容器时出现NullPointerException

java - 如何使用 webdriver 查找按钮元素?

selenium - 如何在远程webdriver/grid配置中在节点端设置firefox配置文件

javascript - 上线后网站 'resizing'? (与本地主机相比)

javascript - 使用 javascript 获取特定字符串

java - 在 Java 中对堆栈中的值进行排序