gpt4 book ai didi

javascript - 由于 AJAX 加载程序,Selenium 脚本失败

转载 作者:行者123 更新时间:2023-11-30 00:07:30 24 4
gpt4 key购买 nike

我正在尝试自动化一个具有 AJAX 加载程序的应用程序。它抛出错误(org.openqa.selenium.WebDriverException:未知错误:元素在点(682、395)不可点击。其他元素会收到点击),当我尝试点击元素和装载机当时处于 Activity 状态。该元素不可访问。

我已经为 click() 创建了一个包装器方法,它确保 AJAX 完成并且元素可以被点击。

我试过 jQuery.active === 0。但是,在那之后,由于加载程序,它也失败了。

因此,我在包装器方法中将 isElementPresent 用于加载程序。但是,这需要花费大量时间。 isElementPresent 需要 6-8 秒。我尝试了 className,cssSelector 作为加载器。但是,运气不好。

下面是我的代码:

 public void WaitForAjax() throws InterruptedException {

while (true) {

Boolean ajaxIsComplete = (Boolean) ((JavascriptExecutor) driver)
.executeScript("return (document.readyState == 'complete') && (jQuery.active === 0);");
if (ajaxIsComplete) {
if (isElementPresent(By.className("z-loading-indicator"))) {
continue;
} else {
break;
}
}
Thread.sleep(100);
}
}


public void clickElement(WebElement element) throws InterruptedException {
WaitForAjax();
Thread.sleep(500);
waitForElementVisible(element);
waitForElementClickable(element);
element.click();
}

请帮忙!

最佳答案

@Bhargav 使用 xpath 或任何其他 seleniumBy 方法尝试以下代码。

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath('xpath of the loader...')));

希望这对您有所帮助。

关于javascript - 由于 AJAX 加载程序,Selenium 脚本失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37943965/

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