Estoy tratando de usar Selenium para iniciar sesión en un sitio web y luego usar urllib2 para realizar solicitudes de RESTy. Sin embargo, para que funcione, necesito que urllib2 pueda usar la misma sesión que usó Selenium.Uso de una cookie de sesión de selenio en urllib2
El registro con selenio funcionaba muy bien y que pueda llamar
self.driver.get_cookies()
y tengo una lista de todas las galletas de selenio conoce, y que termina buscando un poco de algo como esto:
[{u'domain': u'my.awesome.web.app.local',
u'expiry': 1319230106,
u'name': u'ci_session',
u'path': u'/',
u'secure': False,
u'value': u'9YEz6Qs9rNlONzXbZPZ5i9jm2Nn4HNrbaCJj2c%2B...'
}]
he intentado un par de maneras diferentes de para utilizar el chiflado en urllib2, creo que éste parece el mejor:
# self.driver is my selenium driver
all_cookies = self.driver.get_cookies()
cp = urllib2.HTTPCookieProcessor()
cj = cp.cookiejar
for s_cookie in all_cookies:
cj.set_cookie(
cookielib.Cookie(
version=0
, name=s_cookie['name']
, value=s_cookie['value']
, port='80'
, port_specified=False
, domain=s_cookie['domain']
, domain_specified=True
, domain_initial_dot=False
, path=s_cookie['path']
, path_specified=True
, secure=s_cookie['secure']
, expires=None
, discard=False
, comment=None
, comment_url=None
, rest=None
, rfc2109=False
)
)
opener = urllib2.build_opener(cp)
response = opener.open(url_that_requires_a_logged_in_user)
response.geturl()
Aunque no funciona.
Esa última llamada a response.geturl() devuelve la página de inicio de sesión.
¿Echo de menos algo?
¿Alguna idea de cómo hacerlo para buscar el problema?
Gracias.
¿Qué es "cj" desde opening = urllib2.build_opener (urllib2.HTTPCookieProcessor (cj))? –
'cj = cp.cookiejar'. Está en el código de la pregunta original. – ronnefeldt