gpt4 book ai didi

java - 将 WebElement 作为参数传递给隐式等待方法

转载 作者:行者123 更新时间:2023-12-02 08:59:22 25 4
gpt4 key购买 nike

我在 Page.class 中编写了以下方法来重用隐式等待。

public WebDriver waitForElementToLoad(WebElement element)
{
WebDriverWait wait = new WebDriverWait(driver, 60);
wait.until(ExpectedConditions.presenceOfElementLocated((By) element));
return (driver);
}

在我的 test.class 中,我使用页面工厂元素,例如:

//Save button
@FindBy(xpath = "//*[@*='Save']")
private WebElement saveButton;

现在我想打电话:waitForElementToLoad(saveButton);来自 test.Class 但我收到以下错误。

"java.lang.ClassCastException: class com.sun.proxy.$Proxy12 cannot be cast to class org.openqa.selenium.By (com.sun.proxy.$Proxy12 and org.openqa.selenium.By are in unnamed module of loader 'app')"

我也尝试过

WebElement saveButton = driver.findElement(By.xpath("//*[@*='Save']"));
waitForElementToLoad(saveButton);

但运气不好。

我怎样才能做到这一点?

最佳答案

WebDriverWait是显式等待,而不是隐式等待。而且你无法转换WebElementBy .

如果saveButton不是null比页面工厂已经找到它,等待它的存在是没有意义的,这就是为什么你没有 WebElement 过载的原因。等待可见性

wait.until(ExpectedConditions.visibilityOf(element));

关于java - 将 WebElement 作为参数传递给隐式等待方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60277754/

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