为什么我的脚本在 if 条件下失败?
Why is my script failing on the if conditional?
您好,我有这个 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 条件下失败并终止程序?
https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/NoSuchElementException.html
如文档中所定义,当您尝试查找不存在的元素时会抛出此消息
Thrown by WebDriver.findElement(By by) and WebElement.findElement(By by).
Selenium 假设既然你在搜索它,那么它就一定存在。如果没有,则它会假设出现了严重错误并因异常而失败。
在这些情况下,当您知道这不是异常情况时,您可以捕获异常并自己分配布尔值。
bool elementExists;
try {
elementExists = isDisplayed(rowsWithinDrawer);
}
catch (NoSuchElementException ex) {
elementExists = false;
}
if (elementExists) // etc
您好,我有这个 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 条件下失败并终止程序?
https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/NoSuchElementException.html
如文档中所定义,当您尝试查找不存在的元素时会抛出此消息
Thrown by WebDriver.findElement(By by) and WebElement.findElement(By by).
Selenium 假设既然你在搜索它,那么它就一定存在。如果没有,则它会假设出现了严重错误并因异常而失败。
在这些情况下,当您知道这不是异常情况时,您可以捕获异常并自己分配布尔值。
bool elementExists;
try {
elementExists = isDisplayed(rowsWithinDrawer);
}
catch (NoSuchElementException ex) {
elementExists = false;
}
if (elementExists) // etc