Java 如何获取Selenium XPath结果的计数
到目前为止,我正在使用Java 如何获取Selenium XPath结果的计数,java,selenium,xpath,selenium-webdriver,web-scraping,Java,Selenium,Xpath,Selenium Webdriver,Web Scraping,到目前为止,我正在使用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.f
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);
看来我得做这样的事
Integer getCount = By.xpath("count(//td[contains(@class,'blob-code blob-code-addition') or contains(@class,'blob-code blob-code-deletion')])");
但是右侧返回类型为
By
的对象,您无法使用XPath
获取计数,因为selenium中的XPath表达式必须对应于页面上的实际元素
通过findelelements()
+size()
进行计算的方法是如何使用selenium webdriver计算元素。正如alex所说,size()
是一种方法。不过,我有另一个建议给你。
即使找到元素计数的正确方法是根据我的知识使用WebDriver
api withfindElements()
。另一种方法是使用executeScript()
并使用适当的脚本执行javascript
。我不确定是否可以将javascript
和xpath
混合在一起来实现这一点,因为xpath
通过javascript
执行现在不是多浏览器。看见然而,我确实认为将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);
打印
二十六
如果可能的话,你能向我提供你正在使用的网站的url
。@Saifur:那么,你想在那里实现什么呢?只是想知道xpath
返回多少匹配元素?好的@Saifur如果我可以将count与XPATH一起使用,它可以帮助我删除与此语句相关的处理。List listChanges=driver.findElements(getChanges);谢谢我也会检查上面的脚本并标记答案。@Zack正如我说的,listChanges=driver.findElements(getChanges);listChanges.size()代码>是正确的方法。但是上面的脚本执行相同的操作,cssSelector
被编写来替换您正在使用的xpath
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);