Я запускаю Rails 5.x, с помощью Cucumber, Siteprism и Capybara через chromedriver.Большинство вещей работает, кроме ..
У меня есть небольшой кусочек JavaScript, который изменяет класс элемента в ответ на событие.Но Капибара никогда не видит изменений.Он только когда-либо видит класс, который элемент имеет, когда страница первоначально загружена.
Используя Chrome и отлаживая мои шаги Cucumber, я вижу, что у элемента есть новый класс, но Capybara его не видит.
Это должно быть проблемой, с которой сталкивались и решали другие люди, хотя я не могу найти правильный заголовок темы.
пример coffeescript
$(document).on('focus', 'tbody#item-entry > tr > td > input', (e) ->
$(@).closest('tr').addClass('focused-row')
$(@).closest('td').addClass('focused-cell')
)
пример html после события фокусабыл запущен
<tr class="focused-row">
<td>ignore this </td>
</tr>
Цель состоит в том, чтобы изменить цвет фона строки, содержащей элемент ввода, имеющий фокус.Это работает.
Но Capybara не может видеть класс, но он может видеть любые классы, добавленные при загрузке страницы.например,
expect(siteprism_stuff.root_element['class']).to match(/focused-row/)
Игнорировать материал SitePrism, который просто получает нужный элемент.root_element
- это класс Capybara для узла dom.
Теперь я знаю, что он получает правильный элемент Capybara, потому что, если я изменю свое мнение, чтобы поместить вещи в класс для каждой строки, то он увидит, что это совершенно нормально.Чего он не видит, так это любого нового класса, добавленного через Coffeescript.Хотя это видно в Инспекторе Chrome и при необходимости изменяет цвет фона выделенной строки.