0

私はコードのテストを自動化しようとしています...まあ、テストを念頭に置いて書かれていません(多くの要素にIDがなく、同じクラス名を持つ多くの要素があります)。助けていただければ幸いです(質問はコードの下にあります):

<div id="author-taxonomies" class="menu-opened menu-hover-opened-inactive" onmouseover="styleMenuElement(this)" onmouseout="styleMenuElement(this)" onclick="toggleSFGroup(this)">Author</div>
<div id="author-taxonomies-div" class="opened">
    <div id="top-level-menu" class="opened">
        <div id="top-level-menu-item-1" class="as-master">
            <div class="filter-label"> Name</div>
        </div>
        <div id="top-level-menu-item-1" class="as-slave"
            style="top: 525px; left: 34px; z-index: 100; display: none;"> </div>
        <div id="top-level-menu-item-2" class="as-master">
            <div class="filter-label">Title</div>
        </div>
        <div id="top-level-menu-item-2" class="as-slave">
            <div id="top-level-menu-item-2" class="as-slave-title as-slave-title-subgroup"
                >Title</div>
            <div id="top-level-menu-item-2" class="as-slave-body"> </div>
            <div class="as-slave-buffer"> </div>
        </div>
        <div id="top-level-menu-item-3" class="as-master">
            <div class="filter-label">Location</div>
        </div>
        <div id="top-level-menu-item-3" class="as-slave"> </div>
    </div>
</div>

問題は、このメニューの特定のラベルとプロパティを xPath 式で参照する方法です。たとえば、私がしたい場合:

  1. 「場所」ラベルがあることを確認します
  2. クラス「as-slave」の「タイトル」が現時点で表示されていないかどうかを確認します
4

5 に答える 5

4

これは次のようになります。

  1. // div [@ id = "top-level-menu-item-3"] / div [@ class = "filter-label"]
  2. // div [@ id = "top-level-menu1"] ---そして表示用のコードをチェックインします:なし...使用しているセレンrcであると仮定します

更新:次のfirefoxアドインも必ずインストールしてください。サイトhttps://addons.mozilla.org/en-US/firefox/addon/1095でさまざまなxpath式を試すときに非常に便利です。

于 2009-03-27T00:22:40.757 に答える
3

補足として:可能であれば、Seleniumでxpathロケーターを使用しないようにしてください。xpath式が長い場合、Seleniumが要素を見つけるのに、一意のIDを使用して要素を識別する場合に比べて最大20倍遅くなる可能性があります。もちろん、xpathを使用する以外に方法がない場合もあります。ただし、使用する場合は、「//」式を最小限に抑えてください。これは、実際のパフォーマンスキラーです。

于 2009-03-29T18:54:08.383 に答える
2

私は現在、流暢な .Net API を介して xpath 式を生成するためのオープン ソース ライブラリに取り組んでいます。アイデアは、xpath を知らなくても、xpath ベースのセレン ロケータを生成できるようにすることです。

あなたのケースでライブラリを使用する方法の例を次に示します。

XPathFinder.Find.Tag("div").With.Attribute("id", "top-level-menu-item-3").And.Child("div").With.Attribute("class", "フィルターラベル").ToXPathExpression();

これにより、次の xpath が生成されます: "//div[@id='top-level-menu-item-3']/div[@class='filter-label']"

http://code.google.com/p/xpathitup/で確認して ください。

于 2010-08-05T05:19:16.030 に答える
2

Selenium を使い始めたばかりの場合は、Firefox 用の Seleniumアドオンをダウンロードしてください。DOM 要素をクリックすると、Selenium はそれにアクセスするための xpath を表示します。

于 2009-03-27T00:12:23.807 に答える
0

firebug(両方のfirefoxプラグイン)にインストールできるfirepathを使用できます。xpath を取得したら、//使用する前に追加することを忘れないでください。コードまたはセレン IDE のいずれかで。追加していないため、使用できません。xpath には絶対と相対の 2 種類があります。絶対を使用すると、動的 ID が処理されます。ただし、相対を使用すると、実行ごとに壊れます。

于 2012-04-27T05:33:26.203 に答える