我尝试在 Windows 10 系统上使用 Selenium Webdriver 和 Python 来实现浏览器操作的一些自动化。但我有这个问题:Selenium 启动的 Firefox 窗口没有“看到”我已经登录并且目标站点将我发送到登录页面。所以我假设 Selenium 并没有真正使用配置文件,而只是它的一个副本。
我想知道:
- 我关于实际使用个人资料副本的结论是否正确?
- 如果 1. 为真,是否有办法真正使用现有配置文件中的所有内容?
- 如果我的结论不正确,请证明它并指出我可以找到哪些信息可以用于 session 的方向,为什么 Selenium 无法发送它以及如何强制它实际发送。
编辑:
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 确实使用了配置文件的副本,尽管这应该不会造成任何问题。我认为您的问题更多地与 session cookie 和持久性 cookie 有关。
关于 support.mozilla.org是一个列表,指示哪些信息实际存储在您的配置文件中。请注意,cookie 就在其中,但是 session-cookies未存储在 cookies.sqlite 中,这就是 Selenium 无法重建 session 的原因,因为它没有出现在配置文件中。
但是,许多站点在其登录页面上提供了remember-me
或stay-logged-in
选项,如果使用这些选项,将通过 session 可以恢复。我使用以下脚本通过 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)
当我在启用 stay-logged-in
选项的情况下登录 gmail 后运行此脚本时,Selenium 就可以访问我的收件箱。如果未启用 stay-logged-in
选项, session 将在我关闭浏览器时被破坏,因此 Selenium 也无法恢复它。
下面的屏幕截图显示 session cookie 确实没有存储在 cookies.sqlite 中,因此在被 Selenium 使用时不会出现在配置文件中。
关于python - Selenium 使用 Firefox 配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37247336/