10

我正在使用 Capybara/RSpec 编写一些自动化测试,我通过使用一点点 ruby​​ 来选择/配置驱动程序:

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

我正在测试我单击的按钮是否正在打开一个弹出窗口,并且该窗口是否正在显示它应该显示的内容。问题是当测试打开窗口时,谷歌浏览器弹出窗口阻止程序会阻止它,导致测试失败。从选项菜单禁用阻止程序不起作用。另外,我担心一旦我在服务器上运行它们会导致同样的问题。

有没有办法自动禁用测试的弹出块?

4

7 回答 7

8

我们有一个非常相似的问题。正如约翰所说,命令行开关不再起作用。我们尝试使用自定义配置文件,但它似乎被覆盖了。

最终通过使用自身手动禁用弹出窗口来解决它WebDriver

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

我想,这更像是用户无论如何都会做的事情;-)

于 2012-01-27T19:16:07.970 回答
7

你可以打电话给司机带选项。

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

ChromeDriver driver = new ChromeDriver(options);
于 2015-11-09T09:58:53.733 回答
3

试试这个:

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

Selenium wiki 的RubyBindings页面上提到了这一点。

于 2011-10-12T16:19:41.370 回答
2

我不认为你可以,目前。有同样的问题。在当前版本的 chrome 中,禁用弹出窗口阻止程序似乎不再是命令行开关。

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

于 2011-11-03T02:55:40.523 回答
1

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;
于 2016-05-20T14:24:44.083 回答
0

要使用最新的 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()
于 2016-03-08T06:43:25.123 回答
-1

我尝试了以下设置 chromeOptions.addArguments("--disable-web-security"); 它工作正常..它禁用所有弹出

于 2019-06-24T10:05:16.237 回答