【发布时间】:2021-02-22 02:08:11
【问题描述】:
嗨,我有这个 if 语句,我用它来尝试验证页面上是否存在元素(它可以存在,有时它在特定场景中不存在)
脚本在 if 语句条件下失败(当元素不存在时,因为它不存在)
public void checker()
{
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
openDocDrawer();
if (isDisplayed(rowsWithinDrawer))
{
documentDrawerCloser();
wait.Until(driver => docDrawerButton.Displayed);
Console.Writeline("is displayed")
}
else
{
reviewStageCreatorTimeSpan();
documentDrawerCloser();
wait.Until(driver => docDrawerButton.Displayed);
Console.Writeline("is displayed")
}
}
这是堆栈跟踪
Message:
OpenQA.Selenium.NoSuchElementException : no such element: Unable to locate element: {"method":"css selector","selector":"mat-row"}
(Session info: chrome=86.0.4240.111)
Stack Trace:
RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
RemoteWebDriver.FindElement(String mechanism, String value)
RemoteWebDriver.FindElementByCssSelector(String cssSelector)
如果条件为假,因为元素不存在,它不应该执行else语句吗?为什么它在 if 条件下失败并终止程序?
【问题讨论】:
-
它不是false,因为元素不存在。但是该方法会引发异常。这就是程序告诉你的:“嘿!我以一种异常的方式失败了——你需要抓住并处理这种极端情况”
标签: c# selenium selenium-webdriver automation