如何计算 Selenium XPath 结果
How to get count of Selenium XPath results
截至目前,我正在使用 listChanges.size()
计算匹配结果的数量。如何在列表中不加载 getChanges
的情况下直接获取计数?
By getChanges = By.xpath("//td[contains(@class,'blob-code blob-code-addition') or contains(@class,'blob-code blob-code-deletion')]");
List<WebElement> listChanges = driver.findElements(getChanges);
我找到了这个(Count function in XPath),我尝试了下面的方法,但没有用!
Integer getCount = By.xpath(count("//td[contains(@class,'blob-code blob-code-addition') or contains(@class,'blob-code blob-code-deletion')]"));
看来我必须做这样的事情了。
Integer getCount = By.xpath("count(//td[contains(@class,'blob-code blob-code-addition') or contains(@class,'blob-code blob-code-deletion')])");
但是右侧 returns 类型的对象 By
您无法使用 XPath
获取计数,因为 selenium 中的 xpath 表达式必须对应于页面上的实际元素。
您通过 findElements()
+ size()
执行此操作的方式是您必须使用 selenium webdriver 计算元素的方式。
正如亚历克斯所说,size()
是必经之路。不过,我确实有另一个建议给你。
尽管根据我的知识,查找元素计数的正确方法是使用 WebDriver
api 和 findElements()
。另一种方法是通过使用 executeScript()
和适当的 script
来执行 javascript
。我不确定 javascript
和 xpath
是否可以混合在一起来完成此操作,因为 xpath
通过 javascript
执行现在不是多浏览器。参见 this。但是,我确实认为使用 cssSelector
和 javascript
可以使它更容易完成。请参阅以下代码:
String cssQuery = ".blob-code-addition, .blob-code-deletion";
String script = "return document.querySelectorAll('" + cssQuery + "').length;";
Object count = ((JavascriptExecutor)driver).executeScript(script);
System.out.println(count);
打印
26
截至目前,我正在使用 listChanges.size()
计算匹配结果的数量。如何在列表中不加载 getChanges
的情况下直接获取计数?
By getChanges = By.xpath("//td[contains(@class,'blob-code blob-code-addition') or contains(@class,'blob-code blob-code-deletion')]");
List<WebElement> listChanges = driver.findElements(getChanges);
我找到了这个(Count function in XPath),我尝试了下面的方法,但没有用!
Integer getCount = By.xpath(count("//td[contains(@class,'blob-code blob-code-addition') or contains(@class,'blob-code blob-code-deletion')]"));
看来我必须做这样的事情了。
Integer getCount = By.xpath("count(//td[contains(@class,'blob-code blob-code-addition') or contains(@class,'blob-code blob-code-deletion')])");
但是右侧 returns 类型的对象 By
您无法使用 XPath
获取计数,因为 selenium 中的 xpath 表达式必须对应于页面上的实际元素。
您通过 findElements()
+ size()
执行此操作的方式是您必须使用 selenium webdriver 计算元素的方式。
正如亚历克斯所说,size()
是必经之路。不过,我确实有另一个建议给你。
尽管根据我的知识,查找元素计数的正确方法是使用 WebDriver
api 和 findElements()
。另一种方法是通过使用 executeScript()
和适当的 script
来执行 javascript
。我不确定 javascript
和 xpath
是否可以混合在一起来完成此操作,因为 xpath
通过 javascript
执行现在不是多浏览器。参见 this。但是,我确实认为使用 cssSelector
和 javascript
可以使它更容易完成。请参阅以下代码:
String cssQuery = ".blob-code-addition, .blob-code-deletion";
String script = "return document.querySelectorAll('" + cssQuery + "').length;";
Object count = ((JavascriptExecutor)driver).executeScript(script);
System.out.println(count);
打印
26