2016-05-16 4 views
1

Я пытаюсь запустить браузер для автоматизации capybara. Браузер автоматически заполняет «окно ошибки» (не-браузерное окно).Закрыть окно через Capybara

Мне нужно «закрыть/щелкнуть ОК» в окне, чтобы открыть браузер. Я попытался обработать это всплывающее окно с исполняемым файлом «AutoIT». Когда я запускаю файл AutoIT вручную, исполняемый файл успешно обрабатывает его.

Я не могу выполнить сценарий capybara. Код указан ниже

ses = Capybara::Session.new(:selenium) 
IO.popen('c:\ruby\handler.exe') #- Tried this step to execute AutoIT .exe file before visit url step. 

Не повезло. Всплывающее окно появляется только при обращении к объекту.

ses.execute_script "window.close()" #- Tried this step to close the window with the ses object. no luck in this too. 

ses.visit "https://google.com" 

Есть ли способ программно закрыть окно?

+0

Вы уверены, что там действительно было открыто в тестах водосвинки «окно ошибки»? От куда это? Можете ли вы [сделать скриншот] (http://www.opinionatedprogrammer.com/2012/01/screenshots-with-capybara-selenium/) во время сеанса работы capybara и разместить его здесь? В общем, вы должны, например, уметь определять отдельный [профиль браузера] (http://stackoverflow.com/a/12752763/1544012) для использования в сеансах capybara. – BoraMa

+0

Спасибо за ваш ответ BoraMa! ошибка связана с браузером Chrome. Сообщение окна «Не удалось загрузить расширение».Загрузка распакованных расширений отключена администратором. Я пытаюсь закрыть это окно. – Jennifer

+0

Дженнифер, я пытаюсь сказать, что лучший подход может заключаться в том, чтобы вообще избавиться от окна ошибки, если вы создаете профиль браузера, который вообще не пытается загрузить запрещенные расширения. Поскольку я сомневаюсь, что закрытие сообщения об ошибке браузера возможно из javascript, который касается всего того, к чему имеет доступ capybara. – BoraMa

ответ

1

кажется, что вы должны быть в состоянии зарегистрировать драйвер пользовательского селена с помощью браузера Chrome и указать параметр командной строки, чтобы отключить все расширения, с помощью следующего кода реестра драйвера:

Capybara.register_driver :selenium do |app| 
    Capybara::Selenium::Driver.new(app, :browser => :chrome, 
             :switches => %w[--disable-extensions]) 
end 

ses = Capybara::Session.new(:selenium) 
... 

I поместите это вместе, используя информацию here и список доступных параметров командной строки here (я сам этого не проверял).

+1

Спасибо BoraMa. это сработало ! – Jennifer

0

Есть несколько подходов к ошибке всплывающей подобное:

1) Самый простой это сделать свой подход - выполнить скрипт AutoIt перед вызовом водосвинку посетить сайт, который приводит к ошибке выскакивать. Вы должны убедиться, что скрипт автоматического запуска ожидает появления окна перед тем, как его закрыть (см.: https://www.autoitscript.com/autoit3/docs/functions/WinWait.htm для справки).

2) Вы можете выполнить другой рубиновый скрипт/поток (помните, что потоки в рубине немного сложны), которые выполняли бы скрипт autoit в фоновом режиме (в цикле) и ожидали бы успешного ответа.

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

Через несколько часов я смогу предоставить некоторые коды следующих подходов 1 и 2, если у вас все еще будут проблемы с решением проблемы.

0

Ошибка Failed to load Extension. Loading of unpacked extensions are disabled by administrator. указывает, что ваша система была настроена для отключения расширений с помощью Chrome. Таким образом, даже если вам удастся закрыть его, вы, вероятно, не сможете автоматизировать Chrome с Selenium, так как ему нужно запустить Chrome с драйвером в качестве расширения.

Ваш лучший шанс сделать это, вероятно, отключить ограничение или добавить расширение в белый список.

Вот ссылка об этой проблеме: https://bugs.chromium.org/p/chromedriver/issues/detail?id=639

Смежные вопросы