WebDriver IE9 - findElement()与findElements()

时间:2015-08-19 06:30:46

标签: java selenium xpath internet-explorer-9

我正面临一个似乎有些奇怪的问题。

在我的HTML页面上,我有一些链接

<a class='top 1'><img src='something.png' alt='Link 1'/></a>
<a class='top 2'><img src='something.png' alt='Link 2'/></a>
<a class='top 3'><img src='something.png' alt='Link 3'/></a>

在这三个中,还有许多其他我不感兴趣的链接。 我的要求是获得所有这三个链接并对它们做一些事情。这是我的代码

List<WebElement> topLinks = driver.findElements(By.xpath("//a[contains(concat(' ',normalize-space(@class), ' '), ' top ')]"));

现在,据我所知,这段代码有两种可能的结果。

  1. 如果找到任何匹配项,那么topLinks的大小就会说3(在我的情况下)
  2. 如果找不到匹配项,那么我将获得0作为topLinks列表的大小。
  3. 但是当我运行这段代码时,我得到了一个Exception,我没想到。我得到了这个例外

    org.openqa.selenium.NoSuchElementException: Finding elements with xpath == //a[contains(concat(' ',normalize-space(@class), ' '), ' top ')]returned an unexpected error (WARNING: The server did not provide any stacktrace information)
    

    现在我想了解的是:

    1. 为什么我得到例外?因为我已经看到很多其他案例,Selenium不会在findElements()中抛出NoSuchElementException,而只是在没有找到匹配的情况下返回一个空列表。

    2. 我尝试使用同一段代码将findElement()替换为findElement(),就像下面的代码段一样,并且有效

       WebElement link = driver.findElement(By.xpath("//a[contains(concat(' ',normalize-space(@class), ' '), ' top ')]"));
      
    3. 我甚至尝试过很多其他选项,例如下面的

      List<WebElement> links = driver.findElements(By.xpath("//a"));
      

      上面给出了同样的例外情况,其中,下面的一个成功

      WebElement link = driver.findElement(By.xpath("//a"));
      
    4. 我确定我在这里遗漏了一些东西,但我不知道是什么。任何人都可以帮助我吗?

      以下是我正在使用的规格:

      1. Selenium build 2.39.0(selenium-java-2.39.0.jar)
      2. IE9,Windows 7(32位)
      3. IEDriverServer.exe(试过并在2.45.0和2.47.0上得到相同的结果 - 仍尝试各种其他组合)
      4. 这与版本组合有关吗?

        谢谢, 斯利拉姆

0 个答案:

没有答案