Как использовать expect в тексте с разрывами строк?

#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 и посмотреть, что это такое