如何计算与给定xpath表达式
匹配的元素数量xpath: driver.findElement(By.xpath("//div[contains(@id,'richedittext_instance')]"))
我需要的只是计数。
答案 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()
。