当找不到元素时,Try 块不处理场景
Try block do not handle scenario when element not found
我使用了下面的代码,发现 TRY 块在元素不存在的情况下不起作用:
try
{
var actual = new WebDriverWait(m_WebDriver, TimeSpan
.FromSeconds(5))
.Until(ExpectedConditions
.ElementIsVisible(By.XPath(XpathUnderTest)))
.Displayed;
return actual;
}
catch (Exception ex)
{
return false;
}
我有一个用例,其中 Webelement 的存在取决于其他条件,因此它在网页上不会一直存在或不可见。如果 element 存在则它正在工作,如果 element 不存在则 Try catch 无法使用您上面的代码处理该场景。
我也试过:bool isPresent = Driver.Findelements.(xpath).Count() > 0; // 列表
但如果元素不存在,它也不能正常工作
根据您的代码块,这是正确的行为,因为 WebDriverWait
和 ElementIsVisible
是正确的。
根据 documentation
,ExpectedConditions
和 ElementIsVisible
将 return IWebElement
一旦找到并可见。如果 ExpectedConditions
失败,Boolean
值被 return 回退。
正如您在 try
块中定义的那样:
var actual;
并尝试:
return actual;
因此,无论 ExpectedConditions
的 return 与 ElementIsVisible
你的 try
块returnsFalse Positive
.
解决方案:
WebDriverWait
和 ExpectedConditions
必须在任何 [=27= 之外实现]块。下一步可以根据 return 类型决定。
我使用了下面的代码,发现 TRY 块在元素不存在的情况下不起作用:
try
{
var actual = new WebDriverWait(m_WebDriver, TimeSpan
.FromSeconds(5))
.Until(ExpectedConditions
.ElementIsVisible(By.XPath(XpathUnderTest)))
.Displayed;
return actual;
}
catch (Exception ex)
{
return false;
}
我有一个用例,其中 Webelement 的存在取决于其他条件,因此它在网页上不会一直存在或不可见。如果 element 存在则它正在工作,如果 element 不存在则 Try catch 无法使用您上面的代码处理该场景。
我也试过:bool isPresent = Driver.Findelements.(xpath).Count() > 0; // 列表 但如果元素不存在,它也不能正常工作
根据您的代码块,这是正确的行为,因为 WebDriverWait
和 ElementIsVisible
是正确的。
根据 documentation
,ExpectedConditions
和 ElementIsVisible
将 return IWebElement
一旦找到并可见。如果 ExpectedConditions
失败,Boolean
值被 return 回退。
正如您在 try
块中定义的那样:
var actual;
并尝试:
return actual;
因此,无论 ExpectedConditions
的 return 与 ElementIsVisible
你的 try
块returnsFalse Positive
.
解决方案:
WebDriverWait
和 ExpectedConditions
必须在任何 [=27= 之外实现]块。下一步可以根据 return 类型决定。