在Java上的get()之前在Selenium WebDriver上执行javaScipt

时间:2019-07-10 07:51:28

标签: javascript java selenium

我正在尝试使用Java中的硒访问网页。问题是该网站给我一个错误 dataset.append([np.fromiter(chain(*image),label])
我问了一个前端开发人员,并告诉我应该在加载页面之前尝试加载JavaScript。他提到的脚本是Exception in thread "main" org.openqa.selenium.WebDriverException: com.gargoylesoftware.htmlunit.ScriptException: ReferenceError: "require" is not defined. 我在https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.js

上找到了它

我正在使用require.js 我注意到当我初始化驱动程序时, htmlunit-driver 2.28
我可以选择
HtmlUnitDriver driver =new HtmlUnitDriver(true);
driver.executeScript(script, args)上不可用
我想我可以解决该问题(因为我的代码正在使用WebDriver在其他项目上生产)并使用HtmlUnitDriver,但我不知道如何使用executeScript来传递脚本的

如何将其注入WebDriver?谢谢

1 个答案:

答案 0 :(得分:1)

您必须自定义HtmlUnitDriver使用的WebClient。默认情况下,throwExceptionOnScriptError选项为true。但是,如果发生(未处理的)异常,则所有浏览器都将忽略对Javascrip的处理。如果我说对了,那么如果使用真正的浏览器运行,您的页面也会抛出该异常;表示您必须

  1. throwExceptionOnScriptError的开关
  2. 与page / js开发人员讨论代码质量

示例代码:

WebDriver driver = new HtmlUnitDriver(true) {
    @Override
    protected WebClient modifyWebClient(WebClient client) {
        client.getOptions().setThrowExceptionOnScriptError(false);
        return client;
    }
};