Обновление Capybara 1.1.4 -> 2.1.0 вызывает ошибки Poltergeist "ObsoleteNode"
У меня есть работающий набор тестов Capybara 1.1.4 под управлением Poltergeist 1.0.2, работающий поверх PhantomJS 1.9.2
Сегодня я попытался обновить Capybara до 2.1.0 и Poltergeist до 1.4.1. Большинство тестов работают, но группа элементов page.find() в js-включенных тестах возвращает следующую ошибку при.click:
Capybara:: Poltergeist:: ObsoleteNode: элемент, с которым вы пытаетесь взаимодействовать, либо не является частью DOM, либо в данный момент не отображается на странице (возможно, отображение: ни один не задан). Возможно, элемент был заменен другим элементом, и вы хотели взаимодействовать с новым элементом. Если это так, вам нужно сделать новый поиск, чтобы получить ссылку на новый элемент.
Странная вещь:
- page.find ('# my-element') находит элемент очень хорошо
- page.find ('# my-element'). value возвращает правильное значение
НО
- page.find ('# my-element'). click возвращает вышеуказанную ошибку 'ObsoleteNode'.
Кто-нибудь видел это раньше? Я потратил несколько часов на изучение каждой сумасшедшей теории, о которой только мог придумать, и ничто не заставит элементы щелкать. (Примечание: "#my-element" - просто пример. Есть много разных элементов с разными идентификаторами, которые не могут.click)
Любые идеи приветствуются.
2 ответа
Другой ответ не работал для меня. Я использовал select_option
page.find(:css, "#province").find("option[value='Adana']").select_option
Я заменил find элемент и нажал на него методом click_on, и это помогло мне.
click_on('My link')
вместо
find('a', text: 'My link').click
Но у меня была другая проблема. У меня было 2 ссылки. Я решил это, заменив
all('a', text: 'My link').last.click
с использованием контекста:
within('#overlay') do
click_on "My link"
end
И это помогло.