2011-10-12 75 views
10

我正在寫使用水豚/ RSpec的一些自動化測試,我選擇/使用紅寶石的這一點點配置驅動程序:彈出谷歌瀏覽器導致與水豚/ Rspec的問題阻塞測試

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

我m測試我點擊的按鈕是否打開一個彈出窗口,並且窗口正在顯示它應該顯示的內容。問題是,當測試打開窗口時,Google Chrome彈出式窗口攔截器會阻止它,導致測試失敗。禁用選項菜單中的阻止程序不起作用。另外,我擔心,一旦我在服務器上運行它們會導致相同的問題。

有沒有辦法爲測試自動禁用彈出塊?

+0

+1!我們在使用硒WebDriver(chromedriver)運行自動化測試時遇到同樣的問題... – hwjp

回答

7

我們有一個非常類似的問題。像約翰說的那樣,命令行開關不再起作用。我們嘗試使用自定義配置文件,但它似乎被覆蓋。

最終被手動使用WebDriver本身禁止彈出窗口解決它:

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

其中,我想,是更喜歡哪個用戶會做無論如何;-)

+0

我認爲這將作爲一個先決條件測試設置()在運行實際測試權之前完成?感謝您的提示。 – David

+0

是的,正好... – hwjp

2

試試這個:

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

這是RubyBindings頁面上的硒維基上提到的。

+0

我已經嘗試過,但出現以下錯誤:未知選項:{:switches => [「 - disable-popup-阻止「]} –

+1

請確保您使用的是最新版本的selenium-webdriver gem。 – jarib

7

你可以調用驅動程序選項。

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

ChromeDriver driver = new ChromeDriver(options); 
+0

不適合我( –

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() 
0

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;