当前位置: 首页 > 知识库问答 >
问题:

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

微生博简
2023-03-14

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

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

        var params = {
            authKey: "abc"
        };

        Main.init("#content", params);
    </script>
...
    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参数,没有返回,作为函数,但仍然没有...有人能帮忙吗?

提前谢了。

共有1个答案

戚俊人
2023-03-14

根据Firefox的版本,存在一个范围问题。您的变量可能在window.wrappedJsobject中被沙地装箱。

试试这个:

Object val = jse.executeScript(
  "return (window.params || window.wrappedJSObject.params).authKey;");
 类似资料:
  • 问题内容: 我的一部分代码获得了OuterHTML属性 因此我可以进行涉及解析的内容。 虽然在Firefox上的javascript中没有OuterHTML属性,但我找不到其他方法来获取此字符串。有想法吗? 问题答案: 弄清楚了! getAttribute不起作用,但是getAttributeNode很好; D

  • 问题内容: 我想在Firefox扩展中使用jQuery,我将库导入到xul文件中,如下所示: 但是xul文件中无法识别$()函数,jQuery()也无法识别。 我还尝试过将“ content.document”对象(该对象反映“ document”对象)作为上下文参数传递给jQuery函数,如下所示: 但仍然无法正常工作,以前有人遇到过这个问题吗? 问题答案: 我使用以下内容: 这是一个

  • 问题内容: 尝试使用配置文件设置在Firefox中使用Python中的Selenium禁用Flash。这个问题指定了一种通过GUI进行操作的方法,但是对于这种特定用例,最好以编程方式进行操作。具体来说,最好的解决方案是允许在新创建的配置文件对象中禁用Flash。 非常感谢! 问题答案: 您可以使用以下配置文件禁用闪光灯。

  • 所以,我正在运行一个童子军服务器,为此,我制作了一个机器人。为了更好的组织,我们一直在努力获得每个人的真实姓名。机器人将要求他们的名字,他们将键入!命名为Travis_c。然后我希望它将他们的不一致用户名存储在一个变量中,并发送一条消息告诉我trullycool= ' ' 我有问题用户=message.author()我知道如果我想回复我做的事情message.reply但在我的情况下不会工作。

  • 问题内容: 我正在尝试配置的代理设置,因此我使用了以下代码.... 在文件上执行运行后,我得到了类似…的异常 org.openqa.selenium.WebDriverException:在PATH中找不到Firefox二进制文件。 确保安装了Firefox。操作系统似乎是:MAC 系统信息:os.name:“Mac OS X”,os.arch:“ x86_64”,os.version:“ 10.

  • 问题内容: 我听说我们可以在CSS中声明/定义变量,并将其像全局变量一样使用: 所以有人知道如何使用它们吗? 问题答案: 为此,您需要使用CSS动态语言的 Less 或 Sass。