如何快速检查两种元素中的一种是否存在硒?

时间:2016-08-27 20:54:23

标签: c# vb.net selenium selenium-chromedriver

我正在使用此功能搜索两个元素:

 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秒的隐式等待超时,这为简单检查增加了大量额外时间。有没有办法在没有阻止的情况下执行这些检查?对不起,如果这是一个愚蠢的问题,只是稍微摸了一下。

1 个答案:

答案 0 :(得分:0)

我建议你,不要在这里使用Try..Catch。您可以使用FindElements来简化它以检查元素是否存在,如下所示: -

Private Function IsElementPresent(by As By, driver As ChromeDriver) As Boolean
      Return driver.FindElements(by).Count > 0         
End Function