gpt4 book ai didi

javascript - 为什么 HtmlUnitDriver 不能定位 WebElements 但 FirefoxDriver 能够定位相同的 WebElements

转载 作者:行者123 更新时间:2023-12-05 00:32:28 26 4
gpt4 key购买 nike

我有个问题。
是什么让 FirefoxDriver 能够找到 WebElements 并在 java 代码中单击它们,但是当使用 HtmlUnitDriver 运行相同的代码时,找不到相同的 WebElements。此外,在 HtmlUnit(应用 HtmlUnit 原则)上运行相同的代码时,未找到 WebElements,实际上代码返回 NullPointerException。有什么特别的原因吗?

最佳答案

如果没有看到您的代码,我可能会猜测这可能是因为您需要启用 javascript。
默认情况下,在 HtmlUnitDriver 中禁用 JavaScript。
如果您查看位于 (LICENSE Apache 2.0) 的源构造函数
https://github.com/SeleniumHQ/htmlunit-driver/blob/master/src/main/java/org/openqa/selenium/htmlunit/HtmlUnitDriver.java#L166

  /**
* Constructs a new instance, specify JavaScript support
* and using the {@link BrowserVersion#getDefault() default} BrowserVersion.
*
* @param enableJavascript whether to enable JavaScript support or not
*/
public HtmlUnitDriver(boolean enableJavascript) {
this(BrowserVersion.getDefault(), enableJavascript);
}
https://github.com/SeleniumHQ/htmlunit-driver/blob/master/src/main/java/org/openqa/selenium/htmlunit/HtmlUnitDriver.java#L143-L158 的其他构造函数
/**
* Constructs a new instance with JavaScript disabled,
* and the {@link BrowserVersion#getDefault() default} BrowserVersion.
*/
public HtmlUnitDriver() {
this(BrowserVersion.getDefault(), false);
}

/**
* Constructs a new instance with the specified {@link BrowserVersion}.
*
* @param version the browser version to use
*/
public HtmlUnitDriver(BrowserVersion version) {
this(version, false);
}

如果未提供变量,您会看到它们提供默认值 false。
因此,要在 HtmlUnitDriver 中启用 javascript,您需要在初始化它时提供 true,即您希望 JavaScript 组件在其中处于 Activity 状态。
WebDriver driver = new HtmlUnitDriver(BrowserVersion.FIREFOX_38, true);

关于javascript - 为什么 HtmlUnitDriver 不能定位 WebElements 但 FirefoxDriver 能够定位相同的 WebElements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70722687/

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