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

时间:2013-02-08 06:17:31

标签: selenium xpath

如何计算与给定xpath表达式

匹配的元素数量
xpath: driver.findElement(By.xpath("//div[contains(@id,'richedittext_instance')]"))

我需要的只是计数。

4 个答案:

答案 0 :(得分:14)

试用此代码:

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

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

答案 1 :(得分: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列表,你也可以使用迭代器来查看该列表。 乐于助人,我不知道......只是提供另一种方式来达到同样的结局。

答案 2 :(得分:0)

不在Selenium中工作,它只允许从XPath返回节点,而不是像count(...)返回的数字那样的原语。保留供参考,适用于提供更完整XPath API的大多数其他工具。

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

我无法帮助你解决如何从硒中取出n int,但这应该很容易。

答案 3 :(得分:0)

执行以下操作:

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

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

最后,找出列表的长度:

len(elements)

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