Selenium Java select div на основе текста вложенного элемента - PullRequest
0 голосов
/ 27 января 2019

У меня ниже структура HTML.Хотел бы выбрать метку, которая имеет

со значением 3.x

Я пробовал ниже выражения xpath

"//label[contains(@class='options')]/div/p[contains(text(),'3.x')]"
"//div[@class='answerOpts']/label[contains(@class='options')]/div/p[contains(text(),'3.x')]"

Но это не сработало.Получено исключение org.openqa.selenium.NoSuchElementException: Unable to locate element:.Не могли бы вы дать мне знать решение?

Структура HTML

<div class="answerOpts">
   <input class="optionRadios" type="radio" name="2565" id="answer_9218" value="9218">
   <label class="options searchable" for="answer_9218">
      <div>
         <p>2.x</p>
      </div>
   </label>
   <input class="optionRadios" type="radio" name="2565" id="answer_9219" value="9219">
   <label class="options searchable" for="answer_9219">
      <div>
         <p>3.x</p>
      </div>
   </label>
   <input class="optionRadios" type="radio" name="2565" id="answer_9220" value="9220">
   <label class="options searchable" for="answer_9220">
      <div>
         <p>4.x</p>
      </div>
   </label>
   <input class="optionRadios" type="radio" name="2565" id="answer_9217" value="9217">
   <label class="options searchable" for="answer_9217">
      <div>
         <p>1.x</p>
      </div>
   </label>
</div>

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Вот несколько примеров xpath, как вы можете получить label элемент:

//label[normalize-space(.)='3.x']
//label[contains(@class,'options') and .//p[.='3.x']]
//label[contains(@class,'options') and @for and .//p[.='3.x']]
//p[.='3.x']/ancestor::label[1]
//p[.='3.x']/ancestor::label[contains(@class,'searchable')][1]
0 голосов
/ 27 января 2019

попробуйте ниже xpath

. // div / p [text () = '3.x'] / parent :: div / parent :: label / previousing-sibling :: input [1]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...