gpt4 book ai didi

javascript - 在 java 上的 get() 之前在 Selenium WebDriver 上执行 javaScript

转载 作者:行者123 更新时间:2023-12-02 09:42:26 25 4
gpt4 key购买 nike

我正在尝试使用 Java 中的 selenium 访问网页。问题是该网站给我一个错误线程“main”中的异常org.openqa.selenium.WebDriverException:com.gargoylesoftware.htmlunit.ScriptException:ReferenceError:“require”未定义。
我询问了前端开发人员并告诉我应该尝试在加载页面之前加载 JavaScript。他提到的脚本是 require.js我在 https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.js 找到了它

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

如何将其注入(inject)到我的 WebDriver 中?谢谢

最佳答案

您必须稍微自定义 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;
}
};

关于javascript - 在 java 上的 get() 之前在 Selenium WebDriver 上执行 javaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56965874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com