C# 中的 Selenium WaitForElement 抛出 ElementNotVisibleException

本文关键字:抛出 ElementNotVisibleException WaitForElement Selenium 中的 | 更新日期: 2023-09-27 18:34:55

IWebDriver driver = Browser.Instance.Driver;
if (timeout > 0)
{
    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeout));
    try
    {
        wait.Until(ExpectedConditions.ElementExists(selector));
        return driver.FindElement(selector);
    }
    catch(NoSuchElementException)
    {
        throw new NoSuchElementException();
    }
}
else
{
    // Search for element without timeout 
    return driver.FindElement(selector);
}

这是我的代码,我真的不知道为什么它在这里抛出异常。我的超时设置为 30 秒,但他已经在几秒钟后抛出了异常。当我在调试模式中运行测试并自己等待元素时,它工作正常。

起初我使用了这个,但也没有工作

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(drv => drv.FindElement(by));</code>

C# 中的 Selenium WaitForElement 抛出 ElementNotVisibleException

ExpectedConditions.ElementExists();正在等待元素存在于 DOM 中。要确保该元素在网站中可见,请使用ExpectedConditions.ElementIsVisible()

wait.Until(ExpectedConditions.ElementIsVisible(selector));

作为一方不是,如果wait.Until条件不满足,它会抛出WebDriverTimeoutException,而不是NoSuchElementException