2011-10-12 6 views
10

estoy escribiendo algunas pruebas automatizadas usando Carpincho/RSpec, elijo/configurar el controlador mediante el uso de este poco de rubí:bloqueo de ventanas emergentes en Google Chrome causando problemas con Carpincho/Rspec prueba

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

I' Estoy probando si un botón en el que hago clic abre una ventana emergente y si la ventana muestra el contenido que debería. El problema es que cuando la prueba abre la ventana, el bloqueador de ventanas emergentes de Google Chrome lo bloquea y las pruebas fallan. Desactivar el bloqueador desde el menú de opciones no funciona. Además, me temo que una vez que ejecute estos en el servidor causará el mismo problema.

¿Hay alguna manera de desactivar el bloque emergente para las pruebas automáticamente?

+0

+1! estamos teniendo el mismo problema cuando usamos Selenium WebDriver (chromedriver) para ejecutar pruebas automáticas ... – hwjp

Respuesta

7

ocurrido un problema muy similar. Como dice John, el interruptor de línea de comandos ya no funciona. Intentamos usar un perfil personalizado, pero parecía haber sido sobrescrito.

Finalmente resolvió mediante manualmente deshabilitar ventanas emergentes utilizando WebDriver sí:

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

Lo cual, supongo, es más parecido a lo que el usuario podría hacer de todos modos ;-)

+0

Supongo que esto se haría como una configuración de prueba de condición previa() antes de ejecutar la prueba real ¿verdad? Gracias por este consejo. – David

+0

Sí, exactamente ... – hwjp

2

Prueba esto:

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

Esto se menciona en la página RubyBindings en el selenio wiki.

+0

Ya lo he intentado pero me sale el siguiente error: opción desconocida: {: switches => ["- disable-popup- bloqueando "]} –

+1

Asegúrate de estar en la última versión de la gema selenium-webdriver. – jarib

7

Puede llamar conductor con opciones.

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

ChromeDriver driver = new ChromeDriver(options); 
+0

No funciona para mí ( –

0

Para trabajar con controlador más reciente de Chrome, prueba este

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 Versión

Puede hacerlo en JavaScript como tal ...

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; 
Cuestiones relacionadas