Обновление: Поскольку вопрос был обновлен с целью предоставления фактического сообщения об ошибке, определяющего запрос этой функции, мы можем видеть, что фактическая проблема является перекрывающимся элементом. Я знаю, что вы утверждаете, что перекрывающего элемента нет, и думаете, что это просто ошибка (которая никогда не будет исправлена, потому что Poltergeist устарела), но из этого сообщения об ошибке определенно есть перекрывающийся элемент и по именам классов перекрывающегося элемента Я бы сказал, что это баннер внизу экрана, с просьбой принять тот факт, что сайт использует куки-файлы (save_and_open_screenshot
подтвердит это).
В любом случае, если вы решите не фиксировать свой тест, выполнив то, что должен будет сделать пользователь (примите баннер cookie), вы можете использовать текущие метаданные примеров RSpec
def js_true?
RSpec.current_example.metadata[:js]
end
, чтобы определить, участвуете ли вы в тесте с метаданными :js
.
Я хочу еще раз подчеркнуть, что использование trigger
в тесте - ДЕЙСТВИТЕЛЬНО плохая идея. Он не повторяет того, что может сделать пользователь, затруднит переход на более современные драйверы и может в конечном итоге сделать тест, который он использует, в бессмысленном.
------ предыдущий ответ -------
Ваш вопрос сбивает с толку, потому что у вас есть тест с метаданными js: true
, что означает, что его следует запускать только для тестов, которые поддерживают JS, но затем вы вызываете метод, который пытается сделать что-то другое, если поддерживается JS , Как это называется, когда JS не поддерживается?
Если вы как-то вызываете его из драйвера, который не поддерживает JS, все драйверы, поддерживающие JS, должны ответить на wait?
со значением true, чтобы вы могли выполнить page.driver.wait?
или вы могли бы использовать RSpec.current_example.metadata
, чтобы определить, js: true
установлено - однако не все драйверы, поддерживающие JS, поддерживают trigger
, и вы ДЕЙСТВИТЕЛЬНО не должны использовать trigger
, если вы тестируете приложение (это удобно, если вы просто копируете данные со страницы). У вас будут намного лучшие тесты, если вы поймете, почему вы думаете, что вам нужно использовать trigger
(который не копирует поведение пользователя), а вместо этого заменить его на поведение, которое пользователь может на самом деле делать.