Капибара с Rails: как найти ТОЛЬКО невидимые элементы - PullRequest
0 голосов
/ 18 ноября 2018

Я использую Capybara (capybara 3.1.0) для системных тестов в проекте Rails (Rails 5.2.0).

Как убедиться, что элемент не виден.

Я использовал опцию visible: false, пока не обнаружил, что она также соответствует видимым элементам.

Например, я использую:

find("h1", visible: false).text

Нет исключений, и текст h1 печатается в консоли, а h1 определенно виден.

Это ожидается? Какая логика стоит за этим поведением? И как правильно убедиться, что элемент не виден?

1 Ответ

0 голосов
/ 18 ноября 2018

Когда Capybara была впервые выпущена, значение visible (true или false) означало включение или отключение фильтра видимости по причинам прежнего теста. Вы также можете указать значения: visible,: hidden,: all (https://www.rubydoc.info/github/teamcapybara/capybara/master/Capybara/Node/Finders#find-instance_method), где :visible ведет себя так же, как true, :all ведет себя так же, как false и :hidden вернет только невидимые элементы.

Это означает, что ваш find должен стать

find("h1", visible: :hidden).text(:all)

С параметром :all, необходимым для текста, поскольку text по умолчанию - только видимый текст (https://www.rubydoc.info/github/jnicklas/capybara/Capybara/Node/Element#text-instance_method)

...