2012-02-01 8 views
13

Me pregunto si puedo cambiar el perfil del agente de usuario sobre la marcha, sin crear una nueva instancia de ForeFoxDriver? Tengo el siguiente código, que puedo pasar en el agente de usuario para iphone o ipad, etc. funciona bien, pero tengo que crear una nueva instancia para cada prueba que es lenta ya que abre/cierra el navegador. P.ej. Después de hacer mis pruebas con el agente de usuario de iPhone, me gustaría cambiar el perfil a agente de usuario de Android o agente de usuario de iPad, ¿el controlador tiene la opción de cambiar esto sin necesidad de crear una nueva instancia?WebDriver FireFoxProfile UserAgent cambiando con FireFoxDriver

FirefoxProfile profile = new FirefoxProfile(); 
profile.setPreference("general.useragent.override","some user agent, like iphone or iPad"); 
WebDriver driver = new FirefoxDriver(profile); 

// do some tests 
// set profile to new user agent 
// profile.setPreference("general.useragent.override","some android user agent"); 

// can i now set the driver to the new profile here and perform more tests on this same instance of the driver? 
+1

Hasta ahora ya no se puede hacer esto. – p0deje

+0

¿Hay alguna solución ahora? – andyf

Respuesta

2

RemoteWebdriver (clase padre de FirefoxDriver) actualiza las capacidades mapa sólo cuando la sesión está comenzando (en el constructor). Lamentablemente no podemos modificarlo en ningún otro lado. Creo que es una muy buena idea.

1

Probablemente haya una sola forma: mediante extensiones. Sin embargo, nunca he intentado esto ...

FirefoxProfile ffProfile = new FirefoxProfile(); 
ffProfile.addExtension(new File("path/to/extension")); 
WebDriver driver = new FirefoxDriver(ffProfile); 

La extensión podría trabajar con es User Agent Switcher: https://addons.mozilla.org/cs/firefox/addon/user-agent-switcher/?src=ss

Pero como se dijo antes, que nunca lo hice y no tienen idea de cómo controlar el complemento a través de Selenio

+0

Lo comprobaré, gracias por la idea. – Green

0

En nuestra empresa utilizamos el proxy Browsermob, un proxy de código abierto escrito en java. Se integra perfectamente con Selenium, y puedes controlarlo desde tu código. Nos sirve para muchos propósitos, uno de ellos es la manipulación de encabezados.

La forma de hacerlo se describe aquí: https://github.com/webmetrics/browsermob-proxy (sección Solicitud Manipulación HTTP)

0

Este trabajo para mí:

server.addHeader("User-Agent", uaString) 
Cuestiones relacionadas