我正面临一个似乎有些奇怪的问题。
在我的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 ')]"));
现在,据我所知,这段代码有两种可能的结果。
但是当我运行这段代码时,我得到了一个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)
现在我想了解的是:
为什么我得到例外?因为我已经看到很多其他案例,Selenium不会在findElements()中抛出NoSuchElementException,而只是在没有找到匹配的情况下返回一个空列表。
我尝试使用同一段代码将findElement()替换为findElement(),就像下面的代码段一样,并且有效
WebElement link = driver.findElement(By.xpath("//a[contains(concat(' ',normalize-space(@class), ' '), ' top ')]"));
我甚至尝试过很多其他选项,例如下面的
List<WebElement> links = driver.findElements(By.xpath("//a"));
上面给出了同样的例外情况,其中,下面的一个成功
WebElement link = driver.findElement(By.xpath("//a"));
我确定我在这里遗漏了一些东西,但我不知道是什么。任何人都可以帮助我吗?
以下是我正在使用的规格:
这与版本组合有关吗?
谢谢, 斯利拉姆