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秒,但他已经在几秒钟之后抛出了Exception。当我在Debug Modus中运行Test并自己等待Element时,它可以正常工作。
起初我用过这个,但是没有用到
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(drv => drv.FindElement(by));
答案 0 :(得分:3)
ExpectedConditions.ElementExists();
正在等待DOM中 exists 的元素。要确保网站中的元素可见,请使用ExpectedConditions.ElementIsVisible()
wait.Until(ExpectedConditions.ElementIsVisible(selector));
另一方面,如果wait.Until
条件未达到,则会引发WebDriverTimeoutException
,而不是NoSuchElementException
。