Popup blocking in Google Chrome causing issues with Capybara/Rspec tests

此生再无相见时 提交于 2019-11-27 16:35:57

问题


I'm writing some automated tests using Capybara/RSpec, I choose/configure the driver by using this little bit of ruby:

Capybara.register_driver :selenium_chrome do |app|
  Capybara::Selenium::Driver.new(app, :browser => :chrome)
end

I'm testing whether or not a button I click is opening a popup window and that the window is displaying the content it should. The issue is that when the test opens the window, the Google Chrome popup blocker blocks it, causing the tests to fail. Disabling the blocker from the options menu does not work. Also, I'm afraid that once I run these on the server it will cause the same issue.

Is there a way to disable the popup block for the tests automatically?


回答1:


We had a very similar problem. Like John says, the command-line switch no longer works. We tried using a custom profile, but it seemed to be overwritten.

Eventually solved it by manually disabling popups using WebDriver itself:

driver.get('chrome://settings/advanced')
driver.find_element_by_id('privacyContentSettingsButton').click()
driver.find_element_by_name('popups').click()

Which, I guess, is more like what the user would do anyway ;-)




回答2:


You can call driver with options.

ChromeOptions options = new ChromeOptions();
options.addArguments("-incognito");
options.addArguments("--disable-popup-blocking");

ChromeDriver driver = new ChromeDriver(options);



回答3:


Try this:

Capybara::Selenium::Driver.new(app, :browser => :chrome, :switches => %w[--disable-popup-blocking)

This is mentioned on the RubyBindings page on the Selenium wiki.




回答4:


I don't think you can, at the moment. Having the same problem. It doesn't appear that in the current version of chrome, that disabling the popup blocker is a command line switch any more.

http://codesearch.google.com/codesearch#OAMlx_jo-ck/src/chrome/common/chrome_switches.cc&exact_package=chromium




回答5:


JavaScript Version

You can do in JavaScript like so...

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:


To work with latest chrome driver, try this

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:


I tried the following setting chromeOptions.addArguments("--disable-web-security"); and it works correctly .. It disable all pops up



来源:https://stackoverflow.com/questions/7742852/popup-blocking-in-google-chrome-causing-issues-with-capybara-rspec-tests

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!