Tôi đang cố gắng sử dụng Selenium để đăng nhập vào một trang web và sau đó sử dụng urllib2 để tạo yêu cầu RESTy. Để nó hoạt động, tôi cần urllib2 để có thể sử dụng cùng một phiên mà Selenium đã sử dụng.Sử dụng cookie phiên từ selen trong urllib2
Việc khai thác gỗ với selen làm việc tuyệt vời và tôi có thể gọi
self.driver.get_cookies()
và tôi có một danh sách của tất cả các tập tin cookie selen biết về, và nó kết thúc lên tìm kiếm một chút gì đó như thế này:
[{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...'
}]
tôi đã thử một vài cách khác nhau để sử dụng trong cooky urllib2, tôi nghĩ rằng một điều này có vẻ là tốt nhất:
# 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()
Nó không hoạt động mặc dù.
Cuộc gọi cuối cùng để response.geturl() trả về trang đăng nhập.
Tôi có thiếu gì đó không?
Bất kỳ ý tưởng nào về cách tìm hiểu vấn đề?
Cảm ơn.
"cj" từ opener = urllib2.build_opener (urllib2.HTTPCookieProcessor (cj)) là gì? –
'cj = cp.cookiejar'. Đó là mã của câu hỏi gốc. – ronnefeldt