我正在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

09-25 18:30