我想知道是否有其他人遇到类似这样的问题或者有使用WebDriverWait的经历?
如果他们知道我为什么会得到NoSuchElementException,似乎只能在调试模式下抛出。在正常运行时运行测试时,我不会抛出此错误。
我可以点击“继续”并跳过例外。
答案 0 :(得分:5)
我相信这是Visual Studio调试模式的一个怪癖。基本上在调试模式下,即使在try / catch中适当处理异常,异常也会被视为中断。
请记住,当您在WebDriver中将func传递给Until()时,该func将在try内部执行。 VS很可能在该方法中遇到(处理的)异常,这就是为什么在正常运行期间没有看到它的原因。
有关详细信息,请参阅here。
答案 1 :(得分:1)
这是一种解决方法,例如,如果您尝试查找元素:
wait.Until(driver => driver.FindElement(
By.CssSelector(".cssClass"))
);
您可以这样做:
wait.Until(driver => driver.FindElements(
By.CssSelector(".cssClass")).FirstOrDefault()
);
它可以在发布和调试环境中使用。