2011-10-12 8 views
10

Piszę kilka zautomatyzowanych testów za pomocą Kapibara/rspec, wybieram/skonfigurować sterownik za pomocą tego trochę RubyPopup blokując w Google Chrome powoduje problemy z Kapibara/rspec testuje

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

I m testowanie, czy przycisk, który kliknę, otwiera okno podręczne i czy okno wyświetla zawartość, którą powinien. Problem polega na tym, że gdy test otwiera okno, bloker wyskakujących okien przeglądarki Google Chrome blokuje go, powodując niepowodzenie testów. Wyłączenie blokera z menu opcji nie działa. Obawiam się również, że gdy uruchomię je na serwerze, spowoduje to ten sam problem.

Czy istnieje sposób automatycznego wyłączenia bloku wyskakującego dla testów?

+0

+1! mamy ten sam problem, gdy używamy selenu WebDriver (chromedriver) do uruchamiania testów automatycznych ... – hwjp

Odpowiedz

7

Mieliśmy bardzo podobny problem. Tak jak mówi John, przełącznik linii poleceń przestaje działać. Próbowaliśmy użyć niestandardowego profilu, ale wydawało się, że został on nadpisany.

końcu rozwiązany przez ręcznie wyłączenie wyskakujące okna używając WebDriver się:

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

Które, jak sądzę, bardziej przypomina to, co użytkownik może zrobić i tak ;-)

+0

Zakładam, że byłoby to wykonane jako test wstępny() przed rozpoczęciem właściwego testu? Dzięki za tę wskazówkę. – David

+0

Tak, dokładnie ... – hwjp

2

Spróbuj tego:

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

ta jest wymieniona na stronie RubyBindings na wiki selenu.

+0

Próbowałem już tego, ale pojawia się następujący błąd: nieznana opcja: {: switches => ["- disable-popup- blokowanie "]} –

+1

Upewnij się, że masz najnowszą wersję klejnotu selen-webdriver. – jarib

7

Można zadzwonić kierowcy opcje.

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

ChromeDriver driver = new ChromeDriver(options); 
+0

Nie działa dla mnie ( –

0

Aby pracować z najnowszego sterownika chrom, spróbuj tego

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 Wersja

Można zrobić tak jak w 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;