Как идентифицировать элемент по тексту, когда текст занимает несколько строк с помощью Selenium

Можно ли написать xpath, используя такой текст, как (ниже то, что я хочу, но не работает)

//ul[@role='listbox']/..//span[contains(text(),'Fast-Food Restaurent')] 

Код страницы:

<span class="item-title" md-highlight-text="searchText" md-highlight-flags="i">Fast-<span class="highlight">Food</span> Restaurant</span>

Это текстовое поле с автоматическим заполнением, когда я ввожу слово «еда», есть несколько вариантов, и я хочу выбрать из него «Ресторан быстрого питания».

Заранее спасибо.


person Sheikh Rahman    schedule 30.08.2020    source источник


Ответы (3)


Чтобы идентифицировать элемент, вы можете использовать один из следующих способов xpath на основе стратегий поиска:

  • Используя тексты Еда и Постно:

    //ul[@role='listbox']/..//span[.//span[text()='Food']][contains(.,'Fast-')]
    
  • Используя тексты Еда и Ресторан:

    //ul[@role='listbox']/..//span[.//span[text()='Food']][contains(.,'Restaurant')]
    
  • Используя тексты Еда, Быстро и Ресторан:

    //ul[@role='listbox']/..//span[.//span[text()='Food']][contains(.,'Fast-') and contains(.,'Restaurant')]
    
person DebanjanB    schedule 31.08.2020
comment
@SheikhRahman Проголосуйте за ответ, если этот/любой ответ полезен/был вам полезен для будущих читателей. - person DebanjanB; 01.09.2020

Вы можете выбрать требуемый узел span на основе его строкового представления:

//span[.='Fast-Food Restaurant']
person JaSON    schedule 31.08.2020

Вы можете изменить свой путь следующим образом:

//ul[@role='listbox']/..//span[contains(normalize-space(), 'Fast-Food Restaurant')] 
person Alexey R.    schedule 31.08.2020