我正在尝试使用SeleniumRC来测试我的GWT应用程序,并尝试使用CSS选择器匹配元素。
我想计算以下HTML中已启用按钮的数量。
如果按钮位于<td>
下class="x-panel-btn-td "
,则会启用该按钮,如果按钮位于<td>
下class="x-panel-btn-td x-hide-offsets"
,则会被停用。
所以基本上,我想要使用班级<td>
检索所有x-panel-btn-td
下的按钮数量。
<table cellspacing="0">
<tbody>
<tr>
<td id="ext-gen3504" class="x-panel-btn-td ">
<em unselectable="on">
<button id="ext-gen3506" class="x-btn-text" type="button">OK</button>
</em>
</td>
<td id="ext-gen3512" class="x-panel-btn-td x-hide-offsets">
<em unselectable="on">
<button id="ext-gen3506" class="x-btn-text" type="button">Yes</button>
</em>
</td>
<td id="ext-gen3520" class="x-panel-btn-td">
<em unselectable="on">
<button id="ext-gen3506" class="x-btn-text" type="button">No</button>
</em>
</td>
<td id="ext-gen3528" class="x-panel-btn-td x-hide-offsets">
<em unselectable="on">
<button id="ext-gen3506" class="x-btn-text" type="button">Cancel</button>
</em>
</td>
</tr>
</tbody>
</table>
答案 0 :(得分:15)
据我所知,你不能使用CSS选择器,但是Selenium中有一个命令可以通过XPath进行计数。以下命令将验证是否有两个禁用按钮:
verifyXpathCount | //td[contains(@class, 'x-hide-offsets')]//button | 2
在Selenium RC(Java)中,这看起来更像是
assertEquals(selenium.getXpathCount("//td[contains(@class, 'x-hide-offsets')]//button"), 2);
答案 1 :(得分:12)
现在也在[{3}}中实现了这一点(不需要任何额外的Javascript魔法)因为谷歌仍然将这个问题作为最高结果链接,即使Selenium RC已被Webdriver取代,希望这可以节省一些时间。
示例java代码:
int locatorElementSize = driver.findElements(By.cssSelector("yourCSSLocator")).size();
答案 2 :(得分:8)
对于较新版本的Selenium,有一个函数GetCSSCount(字符串定位器)。只是觉得这个问题的更新会很有用
答案 3 :(得分:2)
这应该相对简单。您可以采用多种方式,但我建议您使用DefaultSelenium中的getEval(...)
。
写一些JavaScript:
通常,getEval(...)
将返回最后一个运行的语句的值...因此应该给你计数。
答案 4 :(得分:1)
由于Selenium是Firefox的一部分,后者支持Selectors API,因此可以使用如下测试来简化CSS定位器的计数匹配:
verifyEval | window.document.querySelectorAll("your#css > selector.here").length | 4
在这个例子中,当然,计数被验证为4。
答案 5 :(得分:0)
这是另一种解决方案,使用javascript,类似于关于Selector API / window.document.querySelectorAll的帖子:
http://blog.eviltester.com/2010/03/a-simple-getcsscount-helper-method-for-use-with-selenium-rc.html