Перейти к содержимому

Фотография

Поиск элемента по тексту, содержащему тэги, через xpath


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 FibYar

FibYar

    Новый участник

  • Members
  • Pip
  • 57 сообщений
  • ФИО:Большаков Виталий

Отправлено 23 июня 2015 - 11:51

Добрый день!

При работе с Selenium столкнулся с проблемой поиска элемента по XPath (собственно, проблема относится не к Selenium, а к составлению верного xpath-выражения).

Суть проблемы - я ищу все элементы по тексту:

//*[text()='Нужный мне текст']

Всё хорошо, но тут появился элемент, содержащий внутри текста тэги.

<div class="x-grid3-cell-inner x-grid3-col-objDescription" unselectable="on">
<b>Номер договора:</b>
 С-0127, 
<b>Продукт:</b>
 Новый продукт, 
<b>Сумма:</b>
 1 000.00 RUB, 
<b>Срок:</b>
 90 дней, 
<b>Дата начала:</b>
 19.06.2013
</div>

При поиске по

//*[text()='Номер договора: С-0127, Продукт: Новый продукт, Сумма: 1 000.00 RUB, Срок: 90 дней, Дата начала: 19.06.2013']

элемент не находится.

Понимаю, что можно найти этот элемент с помощью contains(text(),'часть текста') and contains(...), но хочется иметь некое универсальное решение, которое не обращает внимания на эти тэги.

Собственно, вопрос - есть ли возможность с помощью xpath-запроса найти данный элемент, передав приведенную выше строку?


  • 0

#2 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 23 июня 2015 - 12:10

Попробуйте так:

//*[.='Нужный мне текст']

  • 3
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#3 Tishka

Tishka

    Постоянный участник

  • Members
  • PipPipPip
  • 211 сообщений
  • ФИО:Ахрамеев Антон

Отправлено 23 июня 2015 - 12:13

Добрый день.

//*[contains(text(), 'Ваш текст')]

в "Ваш текст" пишите то что вам надо найти, но это не спасет при возможной дубликации указанного Вами текста на странице.


  • 0

#4 asolntsev

asolntsev

    Новый участник

  • Members
  • Pip
  • 64 сообщений
  • ФИО:Андрей Солнцев
  • Город:Таллинн

Отправлено 23 июня 2015 - 16:15

Функция text() возвращает не текст, а все текстовые вершины дерева. Поэтому правильный xpath такой: ".//*/text()[normalize-space(.) = " + escape.quotes(elementText) + "]/parent::*");

Здесь можно подсмотреть этот и другие xpath:https://github.com/c.../Selectors.java
  • 0

#5 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 23 июня 2015 - 20:58

Функция text() возвращает не текст, а все текстовые вершины дерева. Поэтому правильный xpath такой: ".//*/text()[normalize-space(.) = " + escape.quotes(elementText) + "]/parent::*");

Здесь можно подсмотреть этот и другие xpath:https://github.com/c.../Selectors.java

 

Это правда работает лучше, чем

//*[.='some text']

?


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#6 FibYar

FibYar

    Новый участник

  • Members
  • Pip
  • 57 сообщений
  • ФИО:Большаков Виталий

Отправлено 24 июня 2015 - 05:59

 

Попробуйте так:

//*[.='Нужный мне текст']

Большое спасибо! Так получилось.


  • 0

#7 albka1986

albka1986

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Ponomarenko Oleh

Отправлено 24 октября 2016 - 15:02

а как искать кнопку по тексту? 

 я делаю так:

 

WebElement element = driver.findElement(By.linkText("biking"));
element.click();

 

не находит...


  • 0

#8 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 24 октября 2016 - 15:07

а как искать кнопку по тексту? 

 я делаю так:

 

WebElement element = driver.findElement(By.linkText("biking"));
element.click();

 

не находит...

 

HTML код скинь


  • 0

#9 albka1986

albka1986

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Ponomarenko Oleh

Отправлено 25 октября 2016 - 09:07

 

а как искать кнопку по тексту? 

 я делаю так:

 

WebElement element = driver.findElement(By.linkText("biking"));
element.click();

 

не находит...

 

HTML код скинь

 

а это android приложение и не кнопка, а chekbox в виде картинки.


  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных