有没有办法测试元素是否存在?任何 findElement 方法都会以异常结束,但这不是我想要的,因为它可能是元素不存在并且没关系,这不是测试失败,所以异常不能成为解决方案。
我找到了这篇文章:Selenium c# Webdriver: Wait until Element is Present 但这是针对 C# 的,我不太擅长。任何人都可以将代码翻译成Java吗?对不起,伙计们,我在 Eclipse 中试过了,但我没有把它正确地放入 Java 代码中。
这是代码:
public static class WebDriverExtensions{ public static IWebElement FindElement(this IWebDriver driver, By by, int timeoutInSeconds){ if (timeoutInSeconds > 0){ var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds)); return wait.Until(drv => drv.FindElement(by)); } return driver.FindElement(by); } }
使用findElements而不是findElement.
findElements
findElement
findElements如果没有找到匹配的元素而不是异常,将返回一个空列表。
要检查一个元素是否存在,你可以试试这个
Boolean isPresent = driver.findElements(By.yourLocator).size() > 0
如果至少找到一个元素,则返回 true,如果不存在则返回 false。
官方文档推荐这种方法:
findElement 不应该用于查找不存在的元素,而是使用 findElements(By) 并断言零长度响应。