セレンおよびJavaを使用してテーブル要素のid属性の動的な値を抽出する方法

Hfrav:

私は、各行が(部分的に)自動生成されたid要素とダウンロードリンクを有することになるテーブルを有しています。この理由は、IDのダウンロードを分けるように、実際のhref要素は、オールウェイズ、「#」になるということです。

私は、TDにそのid要素の名前を見つける必要があります。それは次のとおりです。私は、テーブルの行にはid要素を持って知っている、と私は名前の一部を知っている、と私は、正確な名前を取得する必要があります。

私は一度にONE Td内に見る必要があるので、私は、一度に各行の1つにアクセスしています。テーブル全体に目を通すする必要はありません。

私は名前を知っているときの要素を見つける方法をよく知っています。しかし、私は唯一のタイプは別のものである知っているときの要素を見つけること。

...
<tr>
 <td class="journalTable-journalPost"
  <a class="htext-small" href="#" id="downloadJournalPost-345">Download</a>
 </td>
</tr>
<tr>
 <td class="journalTable-journalPost"
  <a class="htext-small" href="#" id="downloadJournalPost-346">Download</a>
 </td>
</tr>
...

私は私が種類別の要素を見つけることができますwebdriverをして​​任意の方法(複数可)を見つけることができません。

idの名前「downloadJournalPost-XXX」、だけxxxの変更を取得するため、部分的な名前は、働くだろう。しかし、リンクテキストは私が部分一致を検索することができます、私は見つけることができる唯一の値です。

EDIT:より完全なマークアップ。

<td class="journalTable-journalpost">
 <span class="hb-tekst--sekundar">In <!----><est-ikon class="ng-star-inserted">
  <div aria-hidden="true" class="hb-ikon hb-ikon--pil3-inn  ">
   <svg focusable="false">
    <use xlink:href="#ikon-pil3-inn"></use>
   </svg>
  </div></est-ikon><!----></span>
 <span class="hb-tekst--mellomTittel hb-avstandIngen"> Application and attachments</span>
 <a class="hb-tekst--liten" href="#" id="lastNedJournalPost-2892">Download journal post</a>
</td>
DebanjanB:

印刷するにはリストのid 属性要素のを、あなたは、誘導するために必要なWebDriverWaitをするためにvisibilityOfAllElementsLocatedBy()、あなたが使用することができますJava8を stream()してmap()、あなたは、次のいずれかを使用することができロケータ戦略

  • cssSelector

    List<String> myID = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("td.journalTable-journalPost>a.htext-small"))).stream().map(element->element.getAttribute("id")).collect(Collectors.toList());
    System.out.println(myIDs);
    
  • xpath

    List<String> myIDs = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//td[@class='journalTable-journalPost']/a[@class='htext-small' and text()='Download']"))).stream().map(element->element.getAttribute("id")).collect(Collectors.toList());
    System.out.println(myIDs);
    

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=186177&siteId=1