如何计算与我的CSS选择器匹配的元素数量?

Nir*_*tel 26 selenium css-selectors selenium-rc

我正在尝试使用SeleniumRC来测试我的GWT应用程序,并尝试使用CSS选择器匹配元素.

我想计算以下HTML中启用按钮的数量.

如果是下一个按钮被启用<td>class="x-panel-btn-td "和残疾人,如果它是下<td>class="x-panel-btn-td x-hide-offsets".

基本上,我想用类检索所有<td>s 下的按钮数量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>
Run Code Online (Sandbox Code Playgroud)

Dav*_*unt 15

据我所知,你不能使用CSS选择器,但在Selenium中有一个命令可以通过XPath进行计数.以下命令将验证是否有两个禁用的按钮:

verifyXpathCount | //td[contains(@class, 'x-hide-offsets')]//button | 2
Run Code Online (Sandbox Code Playgroud)

在Selenium RC(Java)中,这看起来更像

assertEquals(selenium.getXpathCount("//td[contains(@class, 'x-hide-offsets')]//button"), 2);
Run Code Online (Sandbox Code Playgroud)


gor*_*sbm 13

现在这也在Selenium Webdriver API中实现(不需要任何额外的Javascript魔法) 因为谷歌仍然将这个问题作为最佳结果链接,即使Selenium RC已经被Webdriver取代,希望这可以节省一些时间.

示例java代码:

int locatorElementSize = driver.findElements(By.cssSelector("yourCSSLocator")).size();
Run Code Online (Sandbox Code Playgroud)


小智 8

对于较新版本的Selenium,有一个函数Ge​​tCSSCount(字符串定位器).只是觉得这个问题的更新会很有用