代码之家  ›  专栏  ›  技术社区  ›  Nirmal Patel

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

  •  26
  • Nirmal Patel  · 技术社区  · 15 年前

    我尝试使用seleniumrc来测试我的GWT应用程序,并尝试使用css选择器来匹配元素。

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

    如果按钮位于 <td> 具有 class="x-panel-btn-td " 如果低于 <TD & GT; 具有 class="x-panel-btn-td x-hide-offsets" .

    所以基本上,我想检索所有按钮的数量 <TD & GT; 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>
    
    6 回复  |  直到 11 年前
        1
  •  15
  •   Dave Hunt    15 年前

    据我所知,您不能使用CSS选择器来实现这一点,但在Selenium中有一个命令用于按xpath计数。以下命令将验证是否存在两个禁用的按钮:

    verifyXpathCount | //td[contains(@class, 'x-hide-offsets')]//button | 2
    

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

    assertEquals(selenium.getXpathCount("//td[contains(@class, 'x-hide-offsets')]//button"), 2);
    
        2
  •  11
  •   HRVHackers    11 年前

    现在还可以在 Selenium Webdriver API 尽管SeleniumRC已经被网络驱动程序取代,但由于谷歌仍然把这个问题作为一个首要结果链接到这个问题上,希望这能节省一些时间。

    Java代码示例:

    int locatorElementSize = driver.findElements(By.cssSelector("yourCSSLocator")).size();
    
        3
  •  7
  •   Raidil142    13 年前

    对于新版本的Selenium,有一个函数getcsCount(字符串定位器)。只是觉得更新这个问题会有用

        4
  •  2
  •   Jason Plank Maksim Kondratyuk    13 年前

    这应该相对简单。你可以用多种方法,但我建议你使用 getEval(...) 默认硒。

    编写一些javascript:

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

    一般来说, GEGEVAL(…) 将返回运行的最后一条语句的值…所以应该给你计数。

        5
  •  1
  •   soletan    13 年前

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

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

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

        6
  •  0
  •   meze    11 年前

    下面是另一个使用javascript的解决方案,类似于发布关于选择器api/window.document.queryselectorall的内容:

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