当前位置: 首页 > 面试题库 >

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

隗翰海
2023-03-14
问题内容

我有一张表,其中每一行都会有一个下载链接,其中包含(部分)自动生成的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>

问题答案:

要打印该元素的 id* 属性List ,您需要为引入 WebDriverWait ,并且可以使用 Java8
和,并且可以使用以下任一LocatorStrategies:

*____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);



 类似资料:
  • 问题内容: 提供了type的HTML元素,如何设置其属性的值,即范围变量和字符串的连接? 问题答案: 如官方文档中所述,指令在这里完全可以提供帮助 https://docs.angularjs.org/guide/interpolation#-ngattr-for-binding-to- arbitrary-attributes 例如,要设置元素的属性值以使其包含索引,则视图片段可能包含 这将被插

  • 我使用了以下代码: 这将让我知道,元素是否存在于dom中。 现在,我需要知道,包含文本框的值“文本框中的我的值”。此文本框的id是什么。

  • 问题内容: 我正在Python中使用Selenium。我想获取一个元素的,并检查它是否是我所期望的。 这是我的代码: 我怎样才能做到这一点?Selenium文档似乎有很多关于选择元素的内容,但是与属性无关。 问题答案: 您可能正在寻找。一个例子示此处以及

  • 我正在尝试访问容器的属性并获取图像URL。 问题是容器div最初是隐藏的,而图像url是动态添加的,并且容器是可见的。 当我尝试使用访问元素时,它返回给我。 html代码为: 此分区的CSS为: 但是,使用下面的代码可以获得url字符串: 使用以下代码动态添加图像容器“photo_holding”

  • 我有一个剑道下拉列表的html正文,它只有一个属性,即id,它是动态变化的,如何在每个页面刷新时准确地识别这个对象。对于其他下拉列表,类和选项卡索引等其他属性已在同一页面上多次显示相同的值-

  • 问题内容: 我丢失了凭据..所以我正在创建这个新线程。 我想更改此行: 对此: 因此,投票设置为。 但是问题在于,在该站点中,有几个项目需要投票,并且元素“数据水龙头”发生了变化。如果我使用此脚本: 但是它不显示任何内容,因为第一个属性值具有另一个数字。如何用输入的元素个数选择行,所以可以替换为? 我只能做这种selenium吗?有没有不使用真正的浏览器的另一种方法? 无论如何,这是网页的结构: