如何解决Selenium和Java:查找没有好的ID或选择器的嵌套元素
我在查找页面中
这是有问题的列表,其中包含所有标签:
<app-root....
<app-soknad....
<app-oppsymmeriing-side
<main class="hb-side-hovedomrade">
<section class="hb-seksjon">
<app-oppsummering-personer-i-boligen>
<div data-e2e-selector="personerCard" class="hb-card">
<div class="hb-card-topp"><h3 translate="" class="hb-card-tittel">Personer i boligen</h3></div>
<div class="hb-card-body">
<ul class="hb-liste hb-liste--minimal">
<li><span aria-hidden="false" class="hb-ikon hb-ikon--storrelse250"></span>E2efornavn E2eetternavn </li>
<li><span aria-hidden="false" class="hb-ikon hb-ikon--storrelse250"></span>Gutt,9 år </li>
</ul>
</div>
Java代码:
List<WebElement> we = driver.findElements(By.cssSelector("[data-e2e-selector=personerCard]>div>div>li"));
List<String> beboere = driver.findElements(By.cssSelector("[data-e2e-selector=personerCard]>div>div>li")).stream().map(WebElement::getText).collect(Collectors.toList());
以上代码无法获得任何结果。我不必指定
解决方法
使用选择器
.hb-liste.hb-liste--minimal > li
https://seleniumbyexamples.github.io/cssselectorclassmultiple
,要获取参考li
的{{1}}元素的列表,请使用以下CSS选择器。
data-e2e-selector
OR
div[data-e2e-selector='personerCard'] li
OR
[data-e2e-selector='personerCard'] li
OR
[data-e2e-selector='personerCard'] ul>li
因此您的Java代码应该是
div[data-e2e-selector='personerCard'] ul>li
OR
List<WebElement> we = driver.findElements(By.cssSelector("div[data-e2e-selector='personerCard'] li"));
,
您可以使用此选择器[data-e2e-selector=personerCard] li
:
List<String> beboere = driver.findElements(By.cssSelector("[data-e2e-selector=personerCard] li")).stream().map(WebElement::getText).collect(Collectors.toList());
for(String text: beboere) {
System.out.println(text);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。