9

如何计算给定 xpath 表达式匹配的元素数

xpath: driver.findElement(By.xpath("//div[contains(@id,'richedittext_instance')]"))

我需要的只是计数。

4

4 回答 4

14

试试这个代码:

//Assume driver is intialized properly.
int iCount = 0;
iCount = driver.findElements(By.xpath("Xpath Value")).size());

iCount具有相同xpath值的元素数量。

于 2013-02-08T07:05:19.383 回答
1

另一种选择如果您的要求严格基于使用 Selenium 的需要,您可以使用 WebElements 执行类似的操作并获取返回列表的大小:

List<WebElement> myListToCheck=currentDriver.findElements(By.xpath("somePath"));
if(myListToCheck.size()>0){
//do this
}else{
//do something else
}

或者只是简单地返回返回列表的大小;如果这就是你真正想从中得到的一切......

int mySize=myListToCheck.size()

我相信一旦您建立了 WebElements 列表,您还可以使用迭代器来查看该列表。有帮助,我不知道...只是提供另一种方式来完成相同的最终游戏。

于 2016-06-29T18:49:17.020 回答
0

在 Selenium 中不起作用,它只允许从 XPath 返回节点,而不是像count(...). 仅供参考,对大多数其他提供更完整 XPath API 的工具有效。

您应该只从查询中返回尽可能少的数据量。count(//div[contains(@id,'richedittext_instance')])计算 XPath 中的结果数量,因此速度更快,因为不必将所有元素从 XPath 引擎传递到 Selenium。

我无法帮助您如何int从硒中获取它作为 n ,但这应该很容易。

于 2013-02-08T13:19:57.473 回答
0

请执行下列操作:

from selenium.webdriver.common.by import By
elements = driver.find_elements(By.XPATH, "Your_XPath")

这会输出一个selenium.webdriver.firefox.webelement.FirefoxWebElements 列表(在我的 Firefox 浏览器中)。

最后,找出列表的长度:

len(elements)

注意。: 请注意,我写的是find_elements()(复数)而不是find_element()。他们两个是不同的。find_element()只返回第一个匹配的 web 元素,但是要找到所有匹配的 web 元素的列表,我们必须使用find_elements().

于 2020-12-13T01:15:47.723 回答