我尝试在 Windows 10 系统上使用 Selenium Webdriver 和 Python 来实现浏览器操作的一些自动化。但我有这个问题:Selenium 启动的 Firefox 窗口没有“看到”我已经登录,并且目标站点将我发送到登录页面。所以我假设 Selenium 并没有真正使用该配置文件,而只是它的副本。
我想知道:
- 我关于实际使用个人资料副本的结论是否属实?
- 如果 1. 为真,是否有办法使用现有配置文件中的所有内容?
- 如果我的结论不正确,请证明它并指出我可以找到哪些信息可用于会话的方向,为什么 Selenium 可能无法发送它以及如何强制它实际上这样做。
Edit:
from selenium import webdriver
fp = webdriver.FirefoxProfile('C:/Users/<user name>/AppData/Roaming/Mozilla/Firefox/Profiles/abc3defghij2.ProfileName')
driver = webdriver.Firefox(fp)
driver.get("https://www.example.com/membersarea")
Selenium 确实使用了配置文件的副本,尽管这应该不会引起任何问题。我认为您的问题更多地与会话 cookie 和持久 cookie 有关。
On 支持.mozilla.org https://support.mozilla.org/en-US/kb/profiles-where-firefox-stores-user-data#w_what-information-is-stored-in-my-profile是一个列表,指示您的个人资料中实际存储了哪些信息。但请注意,cookie 也在其中会话cookie https://en.wikipedia.org/wiki/HTTP_cookie#Session_cookie不存储在 cookies.sqlite 中,这就是 Selenium 无法重建会话的原因,因为它没有出现在配置文件中。
然而,许多网站都提供remember-me
or a stay-logged-in
登录页面上的选项,如果使用,将存储一个持久的 cookie,通过该 cookie 可以恢复会话。我使用以下脚本通过 gmail 进行测试,
from selenium import webdriver
url = "https://mail.google.com"
fp = webdriver.FirefoxProfile('/Users/<username>/Library/Application Support/Firefox/Profiles/71v1uczn.default')
driver = webdriver.Firefox(fp)
driver.get(url)
当我使用以下命令登录 gmail 后运行此脚本时stay-logged-in
启用选项,然后 Selenium 就可以访问我的收件箱。如果stay-logged-in
选项未启用,会话在关闭浏览器时被破坏,因此 Selenium 也无法恢复它。
下面的屏幕截图显示会话cookie确实没有存储在cookies.sqlite中,因此当Selenium使用时不会出现在配置文件中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)