XPATH Тестирование строкового значения потомка и родителя имеет пустое строковое значение - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть html, который я ищу в тесте Selenium, где я хочу найти ребенка по его тексту , только если у родителя нет текста :

Вот HTML:

    <ul>
     <li>
      <div>
      "4"
       <span>630</span>
      </div>
    </li>
    <li>
     <div>

       <span>630</span>
     </div>
    </li>
    <li>
     <div>
     "6"
      <span>630</span>
     </div>
    </li>
   </ul>

Выбор для текстовой строки '630' дает три результата, используя "//span[.='630 ']" или "// span [text () =' 630 '] ", но я хочу только этот средний с пустым родителем. Я перепробовал множество конструкций, которые не работают "//span[.='630' and parent::div[.='']]" или "//span[text()='630' and parent::div[text='']]" и даже "//div[text()='']/*[1] | //span[text()='630']", но все они дают либо 3 результата, либо ни одного.

Обратите внимание, что пока "//span[text()='630'] and .//div[contains(text(),'')]" обнаруживает текст, возвращает true, и мне нужно, чтобы он возвратил элемент, чтобы я мог щелкнуть по нему.

Ответы [ 2 ]

1 голос
/ 27 февраля 2020
//span[text()='630']/parent::div[not(text())]

попробуйте это.

0 голосов
/ 27 февраля 2020

Это сработало для меня:

//div[@innertext='']/span[text()='630']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...