我正在尝试按文本在列表中选择条目。 li条目也有id,但是我想改用文字。
我有以下html片段:
<fieldset felt id="bosted"
<ul class="feltliste ng-scope">
<li>
<label id="lblbostedleierKommunalt" for="bostedleierKommunalt" class="label ">
Leier kommunal bolig
</label>
</li>(verdi,tekst) in bostedTyper -->
<li>
<label id="lblbostedleierPrivat" for="bostedleierPrivat" class="label ">
Leier bolig
<div class="hjelpetekst ng-scope ng-isolate-scope" ng-class="{'hjelpetekst--utvidet': visHjelpetekst}" id="leierPrivat-hjelpetekst " ng-if="verdi === 'LEIER_PRIVAT'">
<button title="Vis hjelpetekst" type="button" ng-click="visEllerSkjulHjelpetekst($event)" aria-describedby="leierPrivat-hjelpetekst ">
<span class="bare-skjermleser" translate=""><span class="ng-scope">Vis hjelpetekst</span></span>
<est-ikon type="sporsmalstegn"><svg focusable="false"><use xlink:href="#ikon-sporsmalstegn"></use></svg>
</div>
以上示例中的文本输入为
雷尔·科莫纳尔·波利格
莱尔·波利格(Leier bolig)
选项1:我正在尝试这样做:
driver.findElement(By.cssSelector("id='bosted' li[text=" + text + "]")).click();
我尝试了“值”和其他选项。但是我不断收到“指定了无效或非法的选择器”。
选项2:我也尝试过此解决方案,取自此处类似问题的答案:
List<WebElement> options = bosted.findElements(By.tagName("li"));
for (WebElement option : options) {
if (option.getText().equals(bosituasjon)) {
option.click();
break;
}
}
除了我认为它看起来凌乱且不太优雅之外,它也不起作用。观看测试运行时,似乎试图单击页面上目标条目上方的条目。 (尽管我不确定。)但是,它不返回任何错误。
但是,它确实找到了所有文本条目,并且if循环命中并执行了option.click()行。
但是明显有些错误,因为它无法导航到页面上的列表条目,并且未选择该选项。
此外,如果我使用.sendkeys(Keys.ENTER)而不是.click(),则会收到“元素不可交互”错误。