27

SeleniumRCを使用してGWTアプリをテストし、CSSセレクターを使用して要素を照合しようとしています。

次のHTMLで有効になっているボタンの数を数えたいです。

ボタンがwithの下にある場合は有効になり、<td>withの下にある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>
4

6 に答える 6

15

私の知る限り、CSSセレクターを使用してこれを行うことはできませんが、SeleniumにはXPathでカウントするためのコマンドがあります。次のコマンドは、2つの無効なボタンがあることを確認します。

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マジックは必要ありません)。SeleniumRC がWebdriverに置き換えられたとしても、Googleは依然としてこの質問にリンクしているため、時間を節約できれば幸いです。

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

Selector API / window.document.querySelectorAllに関する投稿に似た、javascriptを使用した別のソリューションを次に示します。

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

于 2012-02-28T00:56:13.763 に答える