python - Selenium 使用 Firefox 配置文件

标签 python selenium firefox

我尝试在 Windows 10 系统上使用 Selenium Webdriver 和 Python 来实现浏览器操作的一些自动化。但我有这个问题:Selenium 启动的 Firefox 窗口没有“看到”我已经登录并且目标站点将我发送到登录页面。所以我假设 Selenium 并没有真正使用配置文件,而只是它的一个副本。

我想知道:

  1. 我关于实际使用个人资料副本的结论是否正确?
  2. 如果 1. 为真,是否有办法真正使用现有配置文件中的所有内容?
  3. 如果我的结论不正确,请证明它并指出我可以找到哪些信息可以用于 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-mestay-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 使用时不会出现在配置文件中。

Firefox cookies in cookies.sqlite and firebug

关于python - Selenium 使用 Firefox 配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37247336/

相关文章:

java - TestNG 数据提供程序中的 NumberFormatException

selenium - Java - 如何在 Selenium 中点击 Canvas ?

非零持续时间的 jQuery 隐藏/显示在 Firefox 中不起作用(但在 Chrome 中起作用)

python - 根据模式将一个文件拆分为多个文件(切割可以发生在行内)

python - 实现非阻塞远程日志处理程序

python - 您如何替换后跟数字字符的 Python 捕获?

python - 有没有一种实用的方法可以做到这一点?

java - 我们可以将 List<WebElement> 的对象作为参数传递给函数吗?

internet-explorer - 绕过 Firefox 和 IE 的 webfonts 跨域策略

google-chrome - Firefox 到 Chrome 和 Chrome 到 Firefox 的 WebRTC 视频聊天无法正常工作