我有一个,IMO,写得不好的标记,上面有一个不能修改的标记。我试图从li元素中获取文本和特定的选择器,但我遇到了麻烦。
<hb-felt-radio id="residenceChoice" data-e2e-selector="residence-choice">
<hb-felt>
<div translate="">
<fieldset>
<div>
<span translate="" id="residence-legend" data-e2e-selector="residence-question">
How do you live today?
</span>
</div>
<ul class="hb-feltliste">
<li>
<input type="radio" id="residence-RENT_GOV" data-e2e-selector="residence-RENT_GOV">
<div class="hb-label">
<label class="hb-label-tekst" for="residence-RENT_GOV">
Renting governmental
</label>
</div>
</li>
<li>
<input type="radio" id="residence-RENT_PRIVATE" data-e2e-selector="residence-RENT_PRIVATE">
<div class="hb-label">
<label class="hb-label-tekst" for="residence-RENT_PRIVATE">Renting private</label>
</div>
</li>
</ul>
</fieldset>
</div>
</hb-felt>
</hb-felt-radio>我试图从每个li中的标签中获取标签文本和for=,以及从select获取ID。但是,由于我对XPath的理解非常有限(因为我通常可以强制执行更好的选择器),我不知道如何获得它们。
我试过这样的事情
driver.findElements(By.cssSelector("hb-felt-radio[data-e2e-selector='bosted-valg'] div/fieldset/ul/li")).stream().map(WebElement::getText).collect(Collectors.toList());和
driver.findElements(By.xpath("\"//hb-felt-radio[id='bosituasjonValg']//div//fieldset//ul//li")).stream().map(WebElement::getText).collect(Collectors.toList());但我还没破解。
发布于 2020-11-05 09:13:54
你把xPath和CSS混为一谈。下面是如何使用CSS获取所需内容的示例:
List<WebElement> labels = driver.findElements(
new ByChained(By.cssSelector("#residenceChoice"),
By.cssSelector(".hb-label-tekst")
));
labels.forEach(webElement -> {
System.out.println("Label text: " + webElement.getText());
System.out.println("Label 'for': " + webElement.getAttribute("for"));
});这是xPath的考试
List<WebElement> labels = driver.findElements(By.xpath("//*[@id='residenceChoice']//label[@class='hb-label-tekst']"));
labels.forEach(webElement -> {
System.out.println("Label text: " + webElement.getText());
System.out.println("Label 'for': " + webElement.getAttribute("for"));
});https://stackoverflow.com/questions/64694015
复制相似问题