我使用下面的代码,发现当元素不存在时,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的存在取决于其他条件,因此它不会在网页上一直存在或可见。如果元素存在,那么它正在工作,如果元素不存在,则Try catch无法使用上面的代码处理场景。
我也尝试过:bool isPresent = Driver.Findelements。(xpath).Count()> 0; //列表 但如果元素不存在则它也不能正常工作
答案 0 :(得分:1)
根据您的代码块,这是正确的行为, Private Sub ClearExistingHeaders(oDoc As Word.Document)
Dim oSec As Word.Section, oHeader As HeaderFooter
For Each oSec In oDoc.Sections
For Each oHeader In oSec.Headers
oHeader.Range.Delete
Next
Next
End Sub
WebDriverWait
是正确的。
根据documentation
, ElementIsVisible
ExpectedConditions
将返回 ElementIsVisible
强>一旦它被定位并且可见。如果 IWebElement
失败,则会返回 ExpectedConditions
值。
与您定义的Boolean
块一样:
try
试图:
var actual;
所以,无论来自 return actual;
的回复 ExpectedConditions
,您的 ElementIsVisible
块都会返回False Positive
try
WebDriverWait
必须在任何 ExpectedConditions
块之外实施。可以根据返回类型确定后续步骤。