Solución:
En la sección de problemas conocidos de la wiki de chromedriver, dijeron que No se puede especificar un perfil personalizado
Es por eso que me parece que la respuesta de @Sotomajor sobre el uso del perfil con Chrome como lo haría con Firefox no funcionará.
En una de mis pruebas de integración me enfrenté al mismo problema. Pero como no me preocupaba por los valores reales de geolocalización, todo lo que tenía que hacer era simular window.navigator.gelocation
En su código de prueba de Java, coloque esta solución para evitar la barra de información de permisos de geolocalización de Chrome.
chromeDriver.executeScript("window.navigator.geolocation.getCurrentPosition = function(success){ var position = {"coords" : { "latitude": "555", "longitude": "999" } }; success(position);}");
Los valores de latitud (555) y longitud (999) aquí son solo valores de prueba
El enfoque que funcionó para mí en Firefox fue visitar ese sitio manualmente primero, otorgar esos permisos y luego copiar el perfil de Firefox en algún lugar afuera y crear una instancia de selenium firefox con ese perfil.
Entonces:
-
cp -r ~ / Biblioteca / Aplicación Soporte / Firefox / Perfiles / tp3khne7.default /tmp/ff.profile
-
Creando instancia FF:
FirefoxProfile firefoxProfile = new FirefoxProfile(new File("/tmp/ff.profile")); FirefoxDriver driver = new FirefoxDriver(firefoxProfile);
Estoy bastante seguro de que algo similar debería aplicarse a Chrome. Aunque la API de carga de perfil es un poco diferente. Puedes consultarlo aquí: http://code.google.com/p/selenium/wiki/ChromeDriver
Así es como lo hice con capibara para pruebas de pepino
Capybara.register_driver :selenium2 do |app|
profile = Selenium::WebDriver::Chrome::Profile.new
profile['geolocation.default_content_setting'] = 1
config = { :browser => :chrome, :profile => profile }
Capybara::Selenium::Driver.new(app, config)
end
Y hay un enlace a otras configuraciones de perfil útiles: pref_names.cc
Eche un vistazo a “Ajustar las preferencias de perfil” en RubyBindings