Selenium:如何查找div的childNodes数量

时间:2010-10-07 22:40:34

标签: javascript selenium

在一天中的大部分时间里,我一直在为此而奋斗;我需要计算父div中childNodes的数量。它基本上就像一个列表,每个childNode都是我想要计算的行。 html看起来像:

div<@class="list "> 
   div<@id="list-item-01">
   div<@id="list-item-02">
   div<@id="list-item-03">
   div<@id="list-item-04">
   div<@id="list-item-05">
   ...
</div>

我的主要方法是使用一些javascript在Selenium中使用getEval()函数。

失败的例子:

String locator = "xpath=//div[contains(@class,'list')]";
String jscript = "var element = this.browserbot.findElement('"+locator+"');";
       jscript += "element.childNodes.length;";

String locator = "xpath=//div[@class='list']";
String jscript = "var element = this.browserbot.findElement('"+locator+"');";
       jscript += "element.childNodes.length;";

现在我知道元素在那里,我的xpath是正确的,因为我尝试使用.isElementPresent并返回true。所以Selenium和divs有点时髦。

我也用document.evaluate()作为我的javascript命令,但事实证明这一点毫无结果。

2 个答案:

答案 0 :(得分:2)

为什么不使用getXPathCount?像

这样的东西
getXPathCount("//div[contains(@class, 'list ')]/div[contains(@class, 'list-item-')]")

应该这样做。

.Net documentation

Java documentation

答案 1 :(得分:0)

所以这些div是动态创建的。 所以当你创建它时,你将使用一个变量进行迭代,比如$ i,$ i ++。

打印div后,将$ i的值添加到隐藏字段。

如果有3个div,$ i = 3,则putvalue of hidden = 3

使用javascript获取该字段的值。

或者

试试这些

http://api.jquery.com/parent/ http://api.jquery.com/children/