Капибара с Selenium и удаленным Chrome - как прикрепить файл для загрузки? - PullRequest
0 голосов
/ 20 ноября 2018

По моему сценарию при нажатии на иконку сайта открывается браузер файлов.Можно ли прикрепить изображение к открытому файлу браузера в спец.Мой конфиг - Docker, Capybara, драйвер Selenium.Я тестирую на браузере без головы и без головы (Chrome)

Ответы [ 2 ]

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

Как правило, входные данные файла скрыты, как упоминал Томас Уолпол.В коде вы можете видеть атрибут «скрытый», когда вы видите в инструментах разработчика.

Вы можете попробовать удалить скрытый атрибут с помощью JS-скрипта и загрузить файл.

Capybara.current_session.execute_script(
    "document.querySelector('element_locator').removeAttribute('hidden')"
  )

И затемприкрепить файл

page.attach_file(
        element_locator,
        Rails.root.join("features", "support", "upload_files", "file_name")
      )

Я поместил файл для загрузки в свойствах пути-> support-> upload_files-> file_name

Это должно работать.

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

Проблема с вводом файла заключается в том, что фактический элемент <input type="file" ...> часто скрыт, а затем на страницу добавляется кнопка для запуска выбора файла.Capybara не взаимодействует с невидимыми элементами, так как пользователь не мог, и, к сожалению, после того, как диалоговое окно выбора файла (системное диалоговое окно) отображено, браузер больше не имеет никакого контроля над ним, поэтому он не может быть автоматизирован.Обходной путь для этого - не нажимать кнопку, которая открывает выбор файла, а вместо этого временно сделать элемент <input type="file" ...> видимым на странице, чтобы с ним можно было взаимодействовать.Для этого Capybara предоставляет опцию make_visible, как показано в документе - https://www.rubydoc.info/github/teamcapybara/capybara/Capybara/Node/Actions#attach_file-instance_method.

attach_file('name, id, or label text of field', file_to_attach, make_visible: true)
...