我正在C#中使用Selenium编写一些自动化测试,我需要等到某个元素不处于Stale状态。在java中,我曾经使用类似ExpectedConditions.not(ExpectedConditions.stalenessOf(element)
的东西,
但我还没有找到一种方法在C#中做到这一点。
是否有针对此问题的解决方法或者.NET中的Selenium根本没有“Not”属性?
答案 0 :(得分:0)
我也在寻找这种not
方法,似乎没有而或直到不构造可以在C#中使用开箱即用ExpectedConditions
枚举。与Java或Python相比,这是一个不同之处。
但是根据to this answer,您可以使用lambda重写问题:
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until<IWebElement>((d) =>
{
try {
// Calling any method forces a staleness check
element.isEnabled();
return element;
} catch (StaleElementReferenceException expected) {
return null;
}
});
或者您只能使用其他条件ExpectedConditions.ElementExists
。