【发布时间】:2011-12-20 22:46:10
【问题描述】:
有没有办法测试一个元素是否存在?任何 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);
}
}
【问题讨论】:
-
我有几个方法可以非常有效地检查对象,但这取决于你想用它做什么。例如,您要查找元素直到它存在,您要查找它直到它不再存在,还是只想尝试找到它?
-
Java 与 C# 非常相似,我认为您在这里遇到的主要问题之一是在 java 中它是 WebElement 而不是 IWebElement
-
你知道隐式等待方法吗?通过在测试开始时进行设置,您不必检查元素是否存在,因为它使用隐式等待值进行轮询,但是如果它超过该值,它将引发异常
-
这是我关于 Java 中的 WebDriverWait 的帖子:WebDriverWait
-
如果任何一种情况都可以,这可能会给测试性能带来问题,因为与等待您不希望存在的元素相关的等待时间确实会增加。我已经使用了一些技巧来绕过等待时间,但还没有找到真正干净的解决方案。
标签: java selenium selenium-webdriver