Я пытаюсь выбрать записи в списке по тексту. Записи li также имеют идентификаторы, но я бы хотел использовать вместо этого текст.
У меня есть следующий фрагмент 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 (), я получаю ошибку «элемент не взаимодействует».