在 Python 中使用 Selenium 登录后如何维护会话?

use*_*632 5 python selenium

我在 Python 3.4 中使用 Selenium 成功登录网站登录过程如下:

browser = webdriver.PhantomJS()
browser.get('url')

emailElem = self.browser.find_element_by_name('user_id')
emailElem.send_keys(user_id)

passwordElem = self.browser.find_element_by_name('password') 
passwordElem.send_keys(user_pwd)

passwordElem.submit()
Run Code Online (Sandbox Code Playgroud)

登录后,我试图访问需要登录会话的某些页面,

browser.get('login-session-required-page-url')
Run Code Online (Sandbox Code Playgroud)

它丢失了会话并且不允许访问。

我认为这与会话和cookie有关,但我不知道如何处理。

小智 -1

你括号String里的Object是browser.get你在主流浏览器上正常登录成功后的功能性url吗?

如果您要手动登录而不是通过 selenium 登录,则您要访问的新 URL(要求用户登录的 URL)应该是browser.get.

您的代码存在一些潜在问题。您没有指定提交到submit()下一次之间的任何等待时间browser.get()

考虑在两者之间添加 10 到 30 秒的等待,如下所示:

passwordElem.submit()

browser.implicitly_wait(10)

browser.get('https://www.YourSite.com/LoggedIn/User/SomeNewPageThatRequiresBeingSignedIn/')
Run Code Online (Sandbox Code Playgroud)

另一种可能性是,您登录后访问的 URL 对于您在最近登录会话中获得的 cookie 来说是唯一的。尝试在不同时间通过不同浏览器多次登录,查看 URL 是否完全相同。您每次登录时可能都会收到一个唯一的 URL。