Для начала нужно взять сам элемент, я это реализовала так:
String text = driver.findElement(By.xpath("//span[contains(@class, “js-showPhoneBlock”)]/span/span/span/text()")).getText();
System.out.println(text);
Но селениум матерится:
org.openqa.selenium.InvalidSelectorException: invalid selector: The result of the xpath expression “//span[contains(@class, “js-showPhoneBlock”)]/span/span/span/text()” is: [object Text]. It should be an element.
Я прочила, что selenium не позволяет брать с text() в конце. Также пробовала, без text(), но выводится пустое поле.
Да с text() работать не будет
А ты не привязывайся к тексту, попробуй просто искать элемент показать - если он есть, то кликай по нему, вот и всё.
Найти его можно, например, так:
css - .phone_show_link
xpath - .//a[contains(@class, 'phone_show_link')]
И ещё, если цель “тестирования” , состоит в вытягивании номеров телефона с результатов поиска, то номер телефона можно взять из аттрибута "data-phone-number" там у родительского элемента span с классом js-phone, и на показать уже кликать не нужно будет
String text = driver.findElement(By.xpath("//span[contains(@class, “js-showPhoneBlock”)]//span[@class=‘text’]")).getAttribute(“innerHTML”);
попробуйте так
Даже если хайдинг делается на стороне фронта. Нужно тестировать функцию хайдинга отдельно, просто подавая на вход номера телефон и проверяя что они за хайдились. А для селениум тестов более логично end-user сценарии писать.
p.s. Ну и по поводу Selenium, это достаточно низко уровневая библиотека и на рынке существуют библиотеки облегчающие работы с ним, так что призываю ТС по гуглить про Selenide, HtmlElements и т.д.
Если ты хочешь написать тест, то мне кажется нужно действовать следующим образом!
По факту у тебя есть два случая:
Скрытый номер и линк «показать»
Не скрытый номер и отсутствие линка «показать»
Ровно это и нужно проверить, желательно двумя отдельными тестами =)
Если изначально все номера скрыты, то можно брать любое объявление и работать с ним.
Если нет - то нужно правило, по которому мы всегда будет попадать на скрытый номер.
После этого приступаем к тестам.
Первый тест:
Находим объявление, проверяем что есть линк «показать», проверяем что номер в формате XXXXXXX
Второй тест:
Находим объявление, кликаем на линк «показать», проверяем что линк пропал (я думаю что он пропадает, так ведь? =)), проверяем что номер показывается полностью.
Важно знать номер телефона до того, как начинаем тестировать.
Один из способов - создавать нужное объявление до теста и переходить прямо на него.
Если всё же нет такой возможности, то просто проверяем, что подставляется номер из атрибута data-phone-number =)
UPD:
Ах да, по теме для порядка //span[@class=‘js-phone’]//span[@class=‘text’]