Java 如何使用Xpath计算DIV中的IMG标记
我想计算一下surface 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
<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());