如何计算给定 xpath 表达式匹配的元素数
xpath: driver.findElement(By.xpath("//div[contains(@id,'richedittext_instance')]"))
我需要的只是计数。
试试这个代码:
//Assume driver is intialized properly.
int iCount = 0;
iCount = driver.findElements(By.xpath("Xpath Value")).size());
iCount
具有相同xpath
值的元素数量。
另一种选择如果您的要求严格基于使用 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 列表,您还可以使用迭代器来查看该列表。有帮助,我不知道...只是提供另一种方式来完成相同的最终游戏。
在 Selenium 中不起作用,它只允许从 XPath 返回节点,而不是像count(...)
. 仅供参考,对大多数其他提供更完整 XPath API 的工具有效。
您应该只从查询中返回尽可能少的数据量。count(//div[contains(@id,'richedittext_instance')])
计算 XPath 中的结果数量,因此速度更快,因为不必将所有元素从 XPath 引擎传递到 Selenium。
我无法帮助您如何int
从硒中获取它作为 n ,但这应该很容易。
请执行下列操作:
from selenium.webdriver.common.by import By
elements = driver.find_elements(By.XPATH, "Your_XPath")
这会输出一个selenium.webdriver.firefox.webelement.FirefoxWebElement
s 列表(在我的 Firefox 浏览器中)。
最后,找出列表的长度:
len(elements)
注意。: 请注意,我写的是find_elements()
(复数)而不是find_element()
。他们两个是不同的。find_element()
只返回第一个匹配的 web 元素,但是要找到所有匹配的 web 元素的列表,我们必须使用find_elements()
.