我正在使用此功能搜索两个元素:
Private Function IsElementPresent(by As By, driver As ChromeDriver) As Boolean
Try
driver.FindElement(by)
Return True
Catch generatedExceptionName As NoSuchElementException
Return False
End Try
End Function
以下是我的代码的基础知识:
If IsElementPresent(By.Name("Email"), driver) Then
'user is not logged in already do stuff
ElseIf IsElementPresent(By.XPath("//div[contains(text(),'Search for new keywords using a phrase, website or category')]"), driver) Then
'user has already logged in do other stuff
end if
现在这个工作正常。问题是,即使元素可见,第一次检查似乎阻止了第二次检查。好像它在等待第一个if语句返回false之后才检查第二个if语句。使用10秒的隐式等待超时,这为简单检查增加了大量额外时间。有没有办法在没有阻止的情况下执行这些检查?对不起,如果这是一个愚蠢的问题,只是稍微摸了一下。
答案 0 :(得分:0)
我建议你,不要在这里使用Try..Catch
。您可以使用FindElements
来简化它以检查元素是否存在,如下所示: -
Private Function IsElementPresent(by As By, driver As ChromeDriver) As Boolean
Return driver.FindElements(by).Count > 0
End Function