Запуск тестов Capybara против Inte rnet Explorer через Browserstack - PullRequest
2 голосов
/ 18 июня 2020

У меня есть приложение Rails с набором тестов Cucumber, которые запускаются через Capybara в безголовом браузере Chrome. Я хотел бы найти способ запустить эти тесты (или, по крайней мере, их часть) в IE11, и обратился к Browserstack, поскольку, похоже, они предлагают средства для этого.

Я успешно настроил Browserstack для туннелирования в мою машину и запуска моих тестов, но они терпят неудачу в одном браузере, который мне небезразличен - IE11.

Мой пакет в настоящее время падает на странице входа. Я могу сделать снимок экрана и sh установить, что страница действительно отображается. Я могу выполнить:

fill_in 'Email', with: 'mr.jones@example.com'

без ошибок, хотя снимок экрана не показывает ничего, что нужно было заполнить. Выполнение

click_on 'Sign in'

дает:

'Selenium::WebDriver::Error::ElementNotInteractableError: Received a JavaScript error 
attempting to click on the element using synthetic events. We are assuming this is 
because the element isn't displayed, but it may be due to other problems with executing 
JavaScript.'

Я коротко поэкспериментировал с send_keys, чтобы попытаться заполнить форму, но безуспешно. Короче говоря, кажется, я могу перемещаться по страницам и находить элементы, но не могу с ними взаимодействовать.

Кто-нибудь знает, как достичь того, что я пытаюсь здесь сделать? Я надеюсь, что в драйвере есть, например, некоторые настройки, которые заставят его работать.

Мне нужно только иметь возможность протестировать несколько ключевых рабочих процессов против IE, так что даже если в мое тестирование, мне не нужно переписывать весь пакет.

Вот моя текущая конфигурация Capybara:

  caps = Selenium::WebDriver::Remote::Capabilities.new
  caps['browser'] = 'IE'
  caps['browser_version'] = '11.0'
  caps['os'] = 'Windows'
  caps['os_version'] = '10'
  caps['resolution'] = '1024x768'
  caps['browserstack.local'] = 'true'

  Capybara.register_driver :browserstack_ie do |app|
    Capybara::Selenium::Driver.new(
      app,
      :browser => :remote,
      :url => "http://#{ENV['BROWSERSTACK_USER']}:#{ENV['BROWSERSTACK_KEY']}@hub-cloud.browserstack.com/wd/hub",
      :desired_capabilities => caps
    )
  end
  Capybara.javascript_driver = :browserstack_ie

ОБНОВЛЕНИЕ: я нашел полезную информацию здесь

Похоже, проблема в том, что Selenium щелкает не в том месте, и это можно исправить, изменив настройки масштабирования в IE. Мне непонятно, как бы я сделал это в браузере, работающем в Browserstack.

Я также обнаружил, что моя подписка Browserstack не поддерживает более 100 минут автоматического тестирования в месяц, что было немного удар, так что я не могу сразу что-то сделать с этим.

Думаю, я могу запустить свой собственный IE экземпляр на Windows машине в моей локальной сети и подключить свои тесты к этому вместо. Я обновлю эту карточку, если / когда найду что-нибудь полезное.

Наконец, я предлагаю любому, кто читает это, подумать, сколько часов своей жизни они потратили на поддержку множества воплощений IE. Это вред для отрасли, и Microsoft должно быть стыдно за него.

...