27

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

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

如果按钮在 with 下,则启用该按钮,如果在<td>with下,class="x-panel-btn-td "则将其禁用。<td>class="x-panel-btn-td x-hide-offsets"

所以基本上,我想<td>用 class 检索所有 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>
4

6 回答 6

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);
于 2009-10-15T15:56:52.107 回答
14

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

示例java代码:

int locatorElementSize = driver.findElements(By.cssSelector("yourCSSLocator")).size();
于 2014-01-11T04:37:30.597 回答
8

对于较新版本的 Selenium,有一个函数 GetCSSCount(string locator)。只是认为对这个问题的更新会很有用

于 2011-08-31T18:24:41.080 回答
2

这应该比较简单。您可以通过多种方式执行此操作,但我建议getEval(...)在 DefaultSelenium 中使用。

编写一些 JavaScript:

  1. 通过 id 获取所有元素:ext-gen3506
  2. 遍历所有元素并检查它是否已启用
  3. 如果启用,则增加一个计数
  4. “返回”计数。

通常,getEval(...)将返回运行的最后一条语句的值......这样应该会给你计数。

于 2009-10-15T15:54:58.303 回答
1

由于 Selenium 是 Firefox 的一部分,而后者支持 Selectors API,因此可以使用如下测试来简化 CSS 定位器的计数匹配:

verifyEval | window.document.querySelectorAll("your#css > selector.here").length | 4

在这个例子中,计数被验证为 4,当然。

于 2011-07-18T08:46:47.090 回答
0

这是另一个使用 javascript 的解决方案,类似于关于 Selector API / window.document.querySelectorAll 的帖子:

http://blog.eviltester.com/2010/03/a-simple-getcsscount-helper-method-for-use-with-selenium-rc.html

于 2012-02-28T00:56:13.763 回答