#java #html #selenium #xpath
#java #HTML #селен #xpath
Вопрос:
Дерево DOM
<span lightning-radiogroup_radiogroup="" class="slds-radio_faux"></span>
<span lightning-radiogroup_radiogroup="" class="slds-form-element__label">Yes</span></label>
Мой XPath
//Label[text()='External']//following::fieldset//span[text()='Yes']
Дизайн пользовательского интерфейса
Я хочу щелкнуть переключатель в приведенном выше пользовательском интерфейсе, мой XPath идеально определил «Да» или «Нет», но, к сожалению, не смог щелкнуть переключатель.
Из моего XPath, как я могу выбрать переключатель на основе значения метки (да, нет)
Комментарии:
1. Обновите вопрос с помощью текстового HTML, включая
//Label[text()='External']
Ответ №1:
Проблема в том, что вы выбираете диапазон внутри переключателя.
Вам нужно выбрать узел переключателя. Это был бы узел, подобный этому:
<input type="radio" name="name" value="NO" >
<label>
<span lightning-radiogroup_radiogroup="" class="slds-radio_faux">NO</span>
</label>
<input type="radio" name="name2" value="Yes">
<label>
<span lightning-radiogroup_radiogroup="" class="slds-form-element__label">Yes</span>
</label>
Итак, вам нужен XPath, подобный этому:
//input[@type="radio"]/span[text()="YES"]/preceding::input
Комментарии:
1. Ваше предположение о примере HTML-кода неверно, поскольку у
input
узла не может быть дочернего элемента / потомка, и поэтому XPath не будет работать
Ответ №2:
Найдите Yes
текстовый интервал, а затем найдите его элемент-предок вот он, label
затем перейдите к его input
элементу с помощью /ancestor::label/input
"//span[contains(text(), 'Yes')]/ancestor::label/input"
Ответ №3:
Попробуйте
//span[.='Yes']/preceding-sibling::span[@class='slds-radio_faux']
или (скорее всего)
//span[.='Yes']/preceding::input[@type='radio']