#cucumber #capybara
#cucumber #capybara
Вопрос:
Я провожу несколько автоматических тестов с capybara
, cucumber
и webdriver
.
И у меня есть цель узнать, был ли текст загружен на страницу, однако в нем есть свойство css white-space
, которое разбивает текст, и ожидание не может быть найдено.
Мой код выглядит так.
HTML
<p style="white-space: pre-wrap;">
Some
cool
text
</p>
Cucumber.Особенность
expect(page).to have_selector('p', text: 'Some')
expect(page).to have_selector('p', text: 'cool')
expect(page).to have_selector('p', text: 'text')
Я ищу что-то похожее на:
#This text will failure in teste
expect(page).to have_selector('p', text: 'Some cool text')
Ответ №1:
Capybara пытается обрабатывать текст так, как его отображает браузер. Если браузер отображает текст в нескольких строках, попробуйте
expect(page).to have_selector('p', text: "Somencoolntext")
Если это не сработает, вы всегда можете использовать регулярное выражение в соответствии с
expect(page).to have_selector('p', text: /Somes cools text/)
Комментарии:
1. Первый метод, который я пытался использовать в течение нескольких дней, все еще не работает, однако второй метод сработал хорошо, большое вам спасибо.
2. @WEBLastWolf ЕСЛИ вы можете найти элемент, вызовите element.text на нем — он покажет вам, что браузер сообщает Capybara текст. На самом деле вы могли бы просто сделать
find('p', text: /Somes cools text/).text
и посмотреть, что это такое