1

(data-id) から特定の属性を抽出しようとしている以下のコードがあります。私はセレンを使用するのが初めてで、これに1日以上悩まされています。

これにコンテキストを追加するために、私が達成しようとしていることの背景を少し説明します。

オークションを含む Web ページがあり、オークションには ID があり、オークションのすべてのアイテムには一意の ID がありますが、すべて元のオークション ID にリンクしています。要素の「data-id」属性を抽出しようとしていますが、まだ方法がわかりません。これは、IDを取得しようとしているコードのスニペットです。

<div class="dropdown open">
  <a class="dropdown-toggle form-control" href="#" data-toggle="dropdown">
  <ul class="dropdown-menu dropdown-menu-form" role="menu">
    <li id="liAuction4c42556772376a443736343d">
      <label class="checkbox">
        <input id="chkAuction4c42556772376a443736343d" class="auction" type="checkbox" data-caption="09-10-2015 10:30:00" data-id="4c42556772376a443736343d" checked="checked"/>
09-10-2015 10:30:00
      </label>
    </li>
  </ul>
</div>

私は多くのフォーラムに参加し、グーグル全体を検索しましたが、うまくいく解決策が見つかりませんでした。そうでなければ、質問を投稿せず、完全なルーキーのように見えます.

私は .getAttribute を使用しようとしましたが、いくつかの問題があり、コードがコンパイルされていません。何かを正しく行っていないと思います。

String dataID = selenium.findElement(By.xpath("//*[starts-with(@id, 'liAuction')]")).getAttribute("data-id");

上記を試みたところ、「findElement」の部分に赤い下線が引かれ、次のメッセージが表示されました。

「Selenium 型のメソッド findElement(By) は定義されていません」。

括弧を次のように変更すると;

String dataID = selenium.findElement(By.xpath("//*[starts-with(@id, 'liAuction')]").getAttribute("data-id"));

「findElement」には下線が引かれなくなりましたが、「.getAttribute」の部分には赤の下線が引かれ、次のメッセージが表示されます。「メソッド getAttribute(String) は By 型に対して未定義です」

ラップトップを窓から投げ捨てようとしていますが、すべてのファイルを失いたくありません。

前もって感謝します

トニー

4

4 に答える 4

2

メソッドを使用できますgetAttribute

最初に入力要素を見つけてから、data-id を抽出します。

WebElement inputElement = selenium.findElement(By.id("chkAuction4c42556772376a443736343d"));
String data-id = inputElement.getAttribute("data-id");
于 2015-10-07T10:38:40.857 に答える
1

こんなに早く答えが返ってくるとは思っていませんでした。

要素の「data-id」属性を取得するには、次の行を使用する必要がありました。

String dataID = selenium.getValue("//input[@id='chkAuction4c42556772376a443736343d']/@data-id");

これは当初考えていたよりもはるかに簡単になりました.@Shubham Jainに感謝したいと思います.

これが将来他の人に役立つことを願っています

于 2015-10-07T11:19:40.947 に答える