Java 如何使用Xpath计算DIV中的IMG标记

Java 如何使用Xpath计算DIV中的IMG标记,java,selenium-webdriver,xpath,java-8,webdriverwait,Java,Selenium Webdriver,Xpath,Java 8,Webdriverwait,我想计算一下surface div标签下面有多少个IMG标签,并回显数量 <div id="surface" style="width: 4567px; height: 4137px; left: -1850px; top: -1152px; cursor: default;"> <img src="https://media.memories.png" data-seat="L:106|EE:5" data-pl="1" style="position: absolute

我想计算一下surface div标签下面有多少个IMG标签,并回显数量

<div id="surface" style="width: 4567px; height: 4137px; left: -1850px; top: -1152px; cursor: default;">


<img src="https://media.memories.png" data-seat="L:106|EE:5" data-pl="1" style="position: absolute; cursor: pointer; width: 14px; height: 14px; left: 2221px; top: 1561px; display: block;">


<img src="https://media.memories.png" data-seat="L:106|EE:6" data-pl="1" style="position: absolute; cursor: pointer; width: 14px; height: 14px; left: 2237px; top: 1561px; display: block;">


<img src="https://media.memories.png" data-seat="L:106|EE:7" data-pl="1" style="position: absolute; cursor: pointer; width: 14px; height: 14px; left: 2253px; top: 1561px; display: block;">


<img src="https://media.memories.png" data-seat="L:106|EE:8" data-pl="1" style="position: absolute; cursor: pointer; width: 14px; height: 14px; left: 2269px; top: 1561px; display: block;">


</div>
尝试:

对于示例html,它输出选项1: 您可以简单地使用下面的xpath,然后获取计数

JavascriptExecutor js = (JavascriptExecutor) driver;
Long number_of_imgs = (Long) js.executeScript("return document.querySelectorAll(\"div[id='surface'] img\").length");
System.out.println(number_of_imgs);
xpath到Image-“//div[@id='surface']/img”

选项2: 如果您想让它更复杂,可以使用js运行查询并返回计数

JavascriptExecutor js = (JavascriptExecutor) driver;
Long number_of_imgs = (Long) js.executeScript("return document.querySelectorAll(\"div[id='surface'] img\").length");
System.out.println(number_of_imgs);

我更喜欢选项1。

您可以使用XPath-1.0表达式

count(//div[@id='surface']/img)
它对所有
div
元素的所有
img
子元素进行计数。

要打印
标记中
标记的计数,您需要为allelementslocatedby()的
可见性引入WebDriverWait,并且您可以使用以下任一选项:

  • xpath

    System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//div[@id='surface']//img"))).size());
    
  • css选择器

    System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("div#surface img"))).size());
    

欢迎使用堆栈溢出!请告诉我们到目前为止您尝试了什么。Xpath结果可以是数字类型。请尝试在xpath表达式中使用count()函数。仅供参考,我们在选项2中使用的是CSS而不是xpath。谢谢,我能够在//div[@id='surface']/img上使用store xpath count并回显img标记的结果。
System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//div[@id='surface']//img"))).size());
System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("div#surface img"))).size());