gpt4 book ai didi

java - Headless Chrome 的性能问题

转载 作者:行者123 更新时间:2023-12-02 11:56:58 25 4
gpt4 key购买 nike

仅当启用 headless 模式时,我的脚本才会失败。请建议我在编码时应该是什么样子。

  1. 我的大多数脚本都因超时而失败。
  2. 定位器有什么我应该特别寻找的吗?我相信 css 在这种情况下不会帮助我。还有其他与定位器相关的东西吗?
  3. 在持续集成服务器中,执行速度非常慢。 Timed_Out 秒的限制固定为 50。这对我不起作用,甚至对 100 也不起作用。请建议我当我被限制只能使用最多 100 秒的 TimeOut 时如何处理,并且它遇到异常,因为它需要的秒数超过这个。

以下是我仅在启用 headless 时收到的一些异常,

1. WebDriverException: unknown error: Element <input type="radio" class="wizard-input" name="5a68a4c173bb-TOTAL-1" id="5a68a4c173bb-TOTAL-1" value="1"> is not clickable at point (496, 551). Other element would receive the click: <div class="navigation-bar">...</div>

尝试应用等待条件,甚至滚动并单击。

2. TimeoutException: Expected condition failed: waiting for element to be clickable: By.cssSelector: div.icon.icon-add.add-contact-button (tried for 50 second(s) with 500 MILLISECONDS interval)

尝试应用马塞尔建议的条件。正如所说,它甚至超过了 100 秒

这是我的代码的一些示例,

public void clickForwardButton(){
WaitTillElementToBeClickable("xpath", LoginData.Forward);
ScrollAndClickOnElement("xpath", LoginData.Forward);
} //The error seems to be like it wont scroll properly and hence I receive element not found exception

protected void WaitTillElementToBeClickable(String locatorType, String locatorValue) {
try {
WebDriverWait wait = new WebDriverWait(driver, TIME_OUT_IN_SECONDS);
if (locatorType.equalsIgnoreCase("cssSelector")) {
wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(locatorValue)));
} else if (locatorType.equalsIgnoreCase("xpath")) {
wait.until(ExpectedConditions.elementToBeClickable(By.xpath(locatorValue)));
} else if (locatorType.equalsIgnoreCase("id")) {
wait.until(ExpectedConditions.elementToBeClickable(By.id(locatorValue)));
}
} catch (Exception e) {
logger.error("Webdriver Locator Error" + e);
}
}

最佳答案

如果您没有使用 WebDriverWait,请尝试一下

int seconds = 5;
WebDriverWait wait = new WebDriverWait(driver, seconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("yourID")));

您必须导入OpenQA.Selenium.Support.UI才能使用WebDriverWait

编辑

由于 WebDriverWait 方法未提供解决方案,因此请尝试向 ChromeOptions 添加额外的参数来设置窗口大小。由于默认的 headless 窗口大小可能比非 headless 窗口大小小很多,因此值得一试。设置较大窗口大小的另一个好处是减少滚动的需要。

ChromeOptions options = new ChromeOptions();
options.addArgument("headless");
options.addArgument("window-size=1920,1080");

// or

options.addArguments("headless", "window-size=1920,1080");

关于java - Headless Chrome 的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47530435/

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