Selenium 使用 Firefox 配置文件

Posted

技术标签:

【中文标题】Selenium 使用 Firefox 配置文件【英文标题】:Selenium use of Firefox profile 【发布时间】:2016-09-11 20:30:21 【问题描述】:

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

我想知道:

    我关于实际使用配置文件副本的结论是否属实? 如果 1. 为真,有没有办法真正使用现有配置文件中的所有内容? 如果我的结论不正确,请证明它并指出我可以找出哪些信息可用于会话的方向,为什么 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 本身执行登录时,为什么要让 Selenium “检测”您已经登录? 我将 Selenium IDE 与 SelBlocks 一起用于类似的任务,但看起来我遇到了它的一个限制 - 我需要在登录和未登录时从一个页面获取信息。据我所知,使用 Selenium IDE,我可以使用 javascript 打开私有窗口,但无法使用它。 【参考方案1】:

Selenium 确实使用了配置文件的副本,尽管这应该不会导致任何问题。我认为您的问题更多地与会话 cookie 与持久性 cookie 有关。

support.mozilla.org 是一个列表,表明您的个人资料中实际存储了哪些信息。请注意,cookie 也在其中,但 session-cookies 不存储在 cookies.sqlite 中,这就是 Selenium 无法重建会话的原因,因为它没有出现在配置文件中。

但是,许多网站在其登录页面上提供remember-mestay-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)

当我在启用 stay-logged-in 选项的情况下登录 gmail 后运行此脚本时,Selenium 能够访问我的收件箱。如果未启用 stay-logged-in 选项,则关闭浏览器时会话将被破坏,因此 Selenium 也无法恢复它。

下面的截图显示会话 cookie 确实没有存储在 cookies.sqlite 中,因此在 Selenium 使用时不会出现在配置文件中。

【讨论】:

感谢您的回答!但是,我在 Gmail 页面上找不到 stay-logged-in 选项,是否已将其删除? 您可以在 firefox 中使用about:support 找到您的活动配置文件文件夹 你真好

以上是关于Selenium 使用 Firefox 配置文件的主要内容,如果未能解决你的问题,请参考以下文章

python selenium 无法使用 Firefox 扩展 - 消息:无法加载配置文件。简介目录

Selenium 在 Firefox 配置文件中禁用插件

在 Python 中使用 Selenium 下载文件:即使设置了 Firefox 配置文件,下载窗口也会打开

无法使用 C# 在 Selenium WebDriver 中使用现有的 Firefox 配置文件

如何使用 Javascript 通过 selenium 3.6.0 使用另一个配置文件打开 Firefox 浏览器

Python Selenium 设置路径到 firefox 配置文件(ubuntu)