2

Selenium 内で xpath を使用して、td 内にある div 要素を選択しようとしています。私が実際にやろうとしているのは、div のクラスと、それがクラス化されているかどうかなどを判断することですLOGO1, LOGO2, LOGO3。当初はimage:url、logo.jpg を使用して判断するだけでしたが、ターゲット Web サイトを作成した人は誰でも、ロゴの種類ごとに 1 つの画像を使用し、css を使用して画像のどの部分が表示されるかを判断しました。1 つのスプライト画像に 4 つの画像があるとします。これが、css パスを掘り下げるのではなく、div のクラスを決定する必要がある理由です。

セレンでは storeElementPresent | を使用しています。/html/body/form/center/table/tbody/tr/td[2]/div[3]/div[2]/fieldset/table/tbody/tr[2]/td/div/table/tbody/tr[${i}]/td[8]/div//class | cardLogo .

divには複数のクラスがあるので、これが問題だと思っていますが、助けていただければ幸いです。以下、対象ソースです。これは、tbody のテーブル内からのソースです。Selenium は td[8] までの識別に問題はありませんが、div の収集に失敗します。助けてください!

<td class="togglehidefields" style="width:80px;">
<div class="cardlogo LOGO1" style="background-image:url(https://www.somesite.com/merchants/images/image.jpg)"></div>
<span id="ContentPlaceHolder1_grdCCChargebackDetail_lblCardNumber_0">7777</span>
</td>

いじってselenium.getAttribute()いましたが、エラーが発生し続けました。何かアイデアはありますか?

4

2 に答える 2

4

この<div/>要素には 1 つの値を持つ 1 つのクラス属性がありますが、これは HTML として解析されるとトークン化されます。

Selenium はXPath 1.0のみをサポートするため、次のようなクラスを確認する必要があります。

//div[contains(@class, "LOGO1") or contains(@class, "LOGO2")]

必要に応じてそのパターンを拡張し、式に埋め込みます。

XPath 2.0 以降=は、セットベースのセマンティクスで機能する演算子をトークン化して使用できます。

//div[tokenize(@class, ' ') = ("LOGO1", "LOGO2")]
于 2013-06-25T18:15:24.347 に答える
0

古い投稿ですが、誰かに役立つ場合に備えて、使用したソリューションを掲載します。

xpath=//div[contains(@class,'carouselNavNext ')]/.[contains(@class, 'disabled')]

あなたの内容を発射し、続いて/.子と現在の要素をチェックします。

于 2013-09-24T09:49:31.617 に答える