2013-12-12 40 views
4

在Selenium JAVA WebDriver中 - 如何计算子标签? 例子:如何在使用Java的Selenium WebDriver中计算HTML子标签

<div class="subcategory_container"> 
    <div class="products_container"> 
    <div class="product_row"> 
     <form class="product_container"> 
     <form class="product_container"> 
     <form class="product_container"> 
    </div> 
    </div> 
</div> 

我想算形式标签究竟有多少下product_row DIV? 谢谢

+0

我可能会使用xpath表达式:// xpath-to-element [count(childExpression)] –

+0

其实:'count(// div [@ class ='product_row']/form [@ class ='product_container'] )'相当具体 –

+1

@DanielChapman:这不会导致任何元素。硒只能处理实际的元素,而不是XPath的文本或计数等。 –

回答

7

您首先找到父div,然后找到所有目标元素,然后对它们进行计数。

List<WebElement> forms = driver.findElements(By.cssSelector(".product_row form")); 
int count = forms.size(); 
+0

嗨用户1177636感谢您的精确解决方案。 – Onu

0

在一般情况下,我会用一些方法来找到我想要的一切元素,无论是使用XPath或CSS选择器,然后就指望有多少返回结果。

1

这里有两种解决方案:

你既可以选择与XPath

driver.findElements(By.xpath("//div[@class='product_row']/form")) 

或由user1177636

driver.findElements(By.cssSelector(".product_row>form")) 
+0

@ user1177636他们是一个问题的两种解决方案。 – Michael

+0

而不是挑剔_answer_和_solution_的定义之间的差异,我们应该把重点放在当前的问题上。 – Michael

1

提到你可以找到你可以通过CSS查询选择元素的大小通过使用以下语句

System.out.println(driver.findElements(By.xpath("//div[@class='product_row']/form")).size()); 

其中findElements方法返回计数值,在所有元素页面由使用XPath // DIV [@类=“product_row”] /形式

在您的情况下,它会返回“3”作为结果

+0

嗨Sravan你的代码也看起来不错 - 非常感谢 – Onu

相关问题