我正在C#中使用Selenium编写一些自动化测试,我需要等到某个元素未处于过时状态。在Java中,我曾经使用过ExpectedConditions.not(ExpectedConditions.stalenessOf(element)
之类的东西,
但是我还没有在C#中找到实现此目的的方法。
是否有解决此问题的方法,或者.NET中的Selenium根本没有“ Not”属性?
最佳答案
我也在寻找此not
方法,并且似乎没有使用ExpectedConditions
枚举在C#中立即可用的While或While构造。与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
。