如何使用Selenium和Java提取表元素的id属性的动态值

我有一张表,其中每一行都会有一个下载链接,其中包含(部分)自动生成的id元素。原因是实际的href元素始终为“#”,因此ID分开了下载。

我需要在td中找到该id元素的名称。那就是:我知道表行有一个id元素,并且我知道部分名称,并且我需要获得确切的名称。

我一次访问每一行,因此我一次只需要查看一次即可。无需浏览整个表格。

我知道名称后如何查找元素。但是在我只知道类型的时候找到元素是另一回事。

...

<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>

...

我在网络驱动程序中找不到任何可以按类型查找元素的方法。

由于ID的名称为“ downloadJournalPost-

xxx”,因此仅更改xxx即可使用部分名称。但是链接文本是唯一可以找到的值,它使我可以搜索部分匹配项。

编辑:更完整的标记。

<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>

回答:

要打印该元素的 *____visibilityOfAllElementsLocatedBy()

__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);

以上是 如何使用Selenium和Java提取表元素的id属性的动态值 的全部内容, 来源链接: utcz.com/qa/414914.html

回到顶部