selenium - 如果使用 FindBy 注释,Selenium 检查元素是否存在
问题描述
尝试使用@FindBy
注释我的感觉是没有完美的方法来检查元素的存在。
@FindBy (id = "abc")
private WebElement TestElement;
if (TestElement.isPresent) {...};
我找到了解决方案@FindBys
,但是这样我必须@FindBys
为每个要检查 DOM 中存在的元素实现一个附加功能?不是很好。
每个使用ExpectedConditions.presenceOf...
或任何使用的替代解决方案都FindElement
需要定位器作为参数而不是 WebElement,对吗?
ExpectedConditions.elementToBeClickable(WebElement)
当然,我可以使用例如在 try/catch中构建变通方法并引发org.junit.jupiter.api.Assertions.fail
,但这不是真正的 DOM 检查。
对我来说,我似乎更灵活地使用By
页面对象的经典定义(例如private By searchInput = By.xpath("\\input[@class='input_search']");
)而不是使用@FindBy
. 使用@FindBy 我总是处理 WebElement 本身,之前没有机会检查存在,对吧?
使用 DOM 检查页面对象上下文中元素的 DOM 存在的最佳实践解决方案是什么@FindBy
?或者我应该留下By
来以确保安全。
解决方案
这可能不是最好的解决方案,但您可以使用 findBy 并返回一个列表:
List<WebElement> TestElement = driver.findElements(By.id(...));
并每次检查列表 elelement 的大小(在 while 循环中),看它是否不为空。
推荐阅读
- python - 如何调整 seaborn displot 的尺寸?
- reactjs - 用 useState 反应 setState
- java - 连接到 ethereum kovan 以连接我的智能合约的连接 URL 是什么
- amazon-web-services - 无法将 IAM 角色凭证用于 Vault awskms Seal
- r - R 错误,在 FUN(newX[, i], ...) 中:min 没有非缺失参数;返回 Inf
- c# - 在 C# 中通过索引获取数组中的值?
- django - Django:如何将模型定义转储到 json?还是通过json定义模型?
- websocket - websockets之间的连接/路由
- json - 如何使用 JQ 从 JSON 数据中导出 csv
- javascript - 为什么在不等待最低级别时会保留主线程?