Как выбрать тег div со значением текстового узла тега label - PullRequest
0 голосов
/ 19 июня 2020
<abc>
  <div>
    <input>
    <label>A
      <span>C</span>
    </label>
  </div>
  <div>
    <input>
    <label>AB
      <span>D</span>
    </label>
  </div>
</abc>

Мне нужно выбрать тег <div> с критериями поиска текста в теге <label>. Текст внутри <span> - это динамический c, а иногда он пуст, поэтому его не следует использовать в качестве критерия поиска.

То, что я до сих пор пробовал, находится ниже, оба не смогли вернуть ответ:

//div[./label[.='A']]

//div[./label[text().='A']]

Ответы [ 3 ]

1 голос
/ 19 июня 2020

Один способ сделать это с помощью ancestor (первый выберет div с меткой «A», второй выберет div с меткой «AB»):

//label[./text()[normalize-space()="A"]]/ancestor::div
//label[./text()[normalize-space()="AB"]]/ancestor::div

с contains функция:

//label[contains(./text(),"A") and string-length(normalize-space(./text()))=1]/ancestor::div
//label[contains(./text(),"AB")]/ancestor::div
0 голосов
/ 19 июня 2020

Чтобы выбрать родительский элемент <div> по отношению к его дочернему <label> тексту элемента, используя Selenium , вы можете использовать следующие на основе Стратегии локатора :

  • Выбор <div> с дочерним <label> текст как AB

    //div[//label[contains(., 'AB')]]
    

Примечание : по-прежнему не поддерживает , поэтому вам нужно использовать

0 голосов
/ 19 июня 2020

Используйте parent:

//label[text()='A']//parent::div

Также вы можете использовать текст, содержащий:

//label[contains(text(),'A')]//parent::div
...