如何使用 Java 计算 Selenium WebDriver 中的 HTML 子标签
Posted
技术标签:
【中文标题】如何使用 Java 计算 Selenium WebDriver 中的 HTML 子标签【英文标题】:How to count HTML child tag in Selenium WebDriver using Java 【发布时间】:2013-12-31 10:43:25 【问题描述】:在 Selenium JAVA WebDriver - 我如何计算子标签? 示例:
<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下有多少个form标签? 谢谢
【问题讨论】:
我可能会使用 xpath 表达式://xpath-to-element[count(childExpression)] 其实:count(//div[@class='product_row']/form[@class='product_container'])
比较具体
@DanielChapman:这不会产生任何元素。 Selenium 只能处理实际元素,不能处理 XPath 的文本或计数等。
真的吗?这是很好的信息。今晚我会验证它。
感谢大家帮助我。 @User1177636 您的脚本一次性工作并没有尝试其他人,但现在会给其他人一个机会 - 再次感谢您的所有帮助。
【参考方案1】:
先找到父div,然后定位所有目标元素,再统计。
List<WebElement> forms = driver.findElements(By.cssSelector(".product_row form"));
int count = forms.size();
【讨论】:
【参考方案2】:这里有两种解决方案:
你可以通过 xpath 选择
driver.findElements(By.xpath("//div[@class='product_row']/form"))
或者您可以通过 user1177636
中提到的 CSS 查询进行选择driver.findElements(By.cssSelector(".product_row>form"))
【讨论】:
@user1177636 它们是一个问题的两种解决方案。 我们不应挑剔answer和solution的定义之间的区别,而应关注手头的问题。【参考方案3】:您可以使用以下语句找到元素的大小:
System.out.println(driver.findElements(By.xpath("//div[@class='product_row']/form")).size());
其中.findElements
方法返回计数值,该页面中的所有元素由xpath //div[@class='product_row']/form
组成
在您的情况下,它将返回“3”作为结果
【讨论】:
【参考方案4】:一般来说,我会使用某种方法来查找我想要的所有元素,或者使用 xpath 或 css 选择器,然后只计算返回了多少结果。
【讨论】:
【参考方案5】:每个元素都有一个名为 childElementCount 的属性。 您可以使用 WebElement.getAttribute() 函数来获取即时值。
WebElement element = driver.findElement(By.className("product_row"));
int numberOfChilds = Integer.parseInt(element.getAttribute("childElementCount"));
因为 getAttribute() 返回一个字符串,我们必须将它转换为一个 int。
【讨论】:
以上是关于如何使用 Java 计算 Selenium WebDriver 中的 HTML 子标签的主要内容,如果未能解决你的问题,请参考以下文章
如何计算 Selenium 测试相对于 Web 应用程序代码的代码覆盖率
如何使用 javascript 使用 selenium Webdriver 使用 java 设置所选 Web 元素的属性?