java - 将 WebElement 作为参数传递给隐式等待方法
问题描述
我在 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);
from test.Class 但我遇到了错误。
“java.lang.ClassCastException:com.sun.proxy.$Proxy12 类无法转换为 org.openqa.selenium.By 类(com.sun.proxy.$Proxy12 和 org.openqa.selenium.By 位于未命名的模块中加载程序'应用程序')“
我也试过
WebElement saveButton = driver.findElement(By.xpath("//*[@*='Save']"));
waitForElementToLoad(saveButton);
但没有运气。
我怎样才能使这项工作?
解决方案
WebDriverWait
是显式等待,而不是隐式等待。而且你不能WebElement
投到By
.
如果saveButton
不是null
页面工厂已经找到它,等待它的存在是没有意义的,这就是为什么你没有重载WebElement
. 而是等待可见性
wait.until(ExpectedConditions.visibilityOf(element));
推荐阅读
- regex - Jmeter 更好的方法来遍历数组列表,而不是每个值只调用 JSON 响应中的缺失值
- javascript - 在嵌套数组中查找具有值的对象并添加属性
- dt - plotly图表和DT表的客户端链接
- sql-server - SQL server - 当只有 5 列匹配时查找重复记录
- mysql - MySQL Server 8.0 - 没有 bin 文件
- reactjs - React useEffect 不重新渲染功能组件
- plotly - JavaScript 配置,在“悬停时显示最接近的数据”和“悬停时比较数据”之间进行更改
- c# - 函数不计算某些数字的二进制间隙
- java - 通过高级客户端写入弹性搜索 - 在文档上设置时间戳
- regex - Oracle通过正则表达式选择所有匹配的事件到一行中的一列,并带有分隔符