Блокировка всплывающих окон в Google Chrome, вызывающая проблемы с проверками Capybara/Rspec
Я пишу несколько автоматических тестов с использованием Capybara/RSpec, я выбираю/настраиваю драйвер, используя этот немного рубинов:
Capybara.register_driver :selenium_chrome do |app|
Capybara::Selenium::Driver.new(app, :browser => :chrome)
end
Я проверяю, открывается ли кнопка, которую я нажимаю, всплывающее окно, и окно отображает содержимое, которое оно должно. Проблема в том, что когда тест открывает окно, блокировщик всплывающих окон Google Chrome блокирует его, в результате чего тесты терпят неудачу. Отключение блокатора из меню параметров не работает. Кроме того, я боюсь, что как только я запустил их на сервере, это вызовет ту же проблему.
Есть ли способ автоматически отключить всплывающий блок для тестов?
Ответы
Ответ 1
У нас была очень похожая проблема. Как говорит Джон, переключатель командной строки больше не работает. Мы попытались использовать настраиваемый профиль, но он, казалось, был перезаписан.
В конце концов он решил вручную отключить всплывающие окна, используя WebDriver
:
driver.get('chrome://settings/advanced')
driver.find_element_by_id('privacyContentSettingsButton').click()
driver.find_element_by_name('popups').click()
Что, я думаю, больше похоже на то, что пользователь будет делать в любом случае; -)
Ответ 2
Вы можете вызвать драйвер с параметрами.
ChromeOptions options = new ChromeOptions();
options.addArguments("-incognito");
options.addArguments("--disable-popup-blocking");
ChromeDriver driver = new ChromeDriver(options);
Ответ 3
Попробуйте следующее:
Capybara::Selenium::Driver.new(app, :browser => :chrome, :switches => %w[--disable-popup-blocking)
Это упоминается на странице RubyBindings на вики Selenium.
Ответ 4
Я не думаю, что вы можете в данный момент. Имеет ту же проблему. Не похоже, что в текущей версии chrome отключить блокировщик всплывающих окон уже нет.
http://codesearch.google.com/codesearch#OAMlx_jo-ck/src/chrome/common/chrome_switches.cc&exact_package=chromium
Ответ 5
Версия JavaScript
Вы можете сделать в JavaScript, как это...
var chrome = require('selenium-webdriver/chrome.js');
var options = new chrome
.Options()
.addArguments('-incognito', '--disable-popup-blocking');
var driver = new webdriver.Builder()
.forBrowser('chrome')
.setChromeOptions(options)
.build();
driver.manage().timeouts().setScriptTimeout(10000);
return driver;
Ответ 6
Чтобы работать с последним драйвером chrome, попробуйте это
css_selector_for_iframe = 'iframe[name="settings"]'
driver.get('chrome://settings/content')
iframe = driver.find_element_by_css_selector(css_selector_for_iframe)
driver.switch_to_frame(iframe)
driver.find_element_by_name('popups').click()
click_element(driver, '#content-settings-overlay-confirm')
driver.switch_to_default_content()
Ответ 7
Я попробовал следующий параметр chromeOptions.addArguments("- disable-web-security"); и работает правильно.. Отключает все всплывающие окна