我正在使用Capybara / RSpec编写一些自动化测试,我使用这一点ruby来选择/配置驱动程序:
Capybara.register_driver :selenium_chrome do |app|
Capybara::Selenium::Driver.new(app, :browser => :chrome)
end
我正在测试我点击的按钮是否打开弹出窗口,窗口是否显示应该显示的内容。问题是当测试打开窗口时,Google Chrome弹出窗口阻止程序会阻止它,导致测试失败。从选项菜单中禁用阻止程序不起作用。另外,我担心一旦我在服务器上运行它们就会导致同样的问题。
有没有办法自动禁用测试的弹出窗口?
答案 0 :(得分:7)
我们遇到了一个非常相似的问题。就像约翰所说,命令行开关不再有效。我们尝试使用自定义配置文件,但它似乎被覆盖了。
最终通过手动使用WebDriver
禁用弹出窗口来解决它:
driver.get('chrome://settings/advanced')
driver.find_element_by_id('privacyContentSettingsButton').click()
driver.find_element_by_name('popups').click()
我猜,这更像是用户会做的事情; - )
答案 1 :(得分:7)
您可以使用选项调用驱动程序。
ChromeOptions options = new ChromeOptions();
options.addArguments("-incognito");
options.addArguments("--disable-popup-blocking");
ChromeDriver driver = new ChromeDriver(options);
答案 2 :(得分:3)
试试这个:
Capybara::Selenium::Driver.new(app, :browser => :chrome, :switches => %w[--disable-popup-blocking)
在Selenium wiki的RubyBindings页面上提到了这一点。
答案 3 :(得分:1)
我认为你现在不能。有同样的问题。在当前版本的chrome中,似乎没有禁用弹出窗口阻止程序的命令行开关。
答案 4 :(得分: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;
答案 5 :(得分: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()
答案 6 :(得分:0)
我尝试了以下设置 chromeOptions.addArguments(“-disable-web-security”); 并且可以正常工作..它将禁用所有弹出窗口