将Firefox与Selenium webdriver一起使用不会记录历史记录

2024-10-04 03:28:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我用pythonselenium webdriver 2.47运行ff39。在

from selenium import webdriver
profile = webdriver.FirefoxProfile('C:\\Users\\Mike\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\kgbrptal.default')
b = webdriver.Firefox(profile)

C:\Users\Mike\AppData\Roaming\Mozilla\Firefox\Profiles\kgbrptal.default\places.sqlite中,我应该会看到历史更新。但什么都没有更新?在

我希望所有的行动都记录在档案数据库中。在


Tags: fromdefaultmozillaseleniumfirefoxprofileprofilesroaming
1条回答
网友
1楼 · 发布于 2024-10-04 03:28:55

问题

您面临的问题是Selenium从您告诉它使用的概要文件创建了一个新的临时概要文件。它这样做是因为它必须添加一个附加组件,用于在浏览器和脚本之间建立通信。如果它没有将您的概要文件复制到一个新的位置,那么该插件将被添加到您提供给Selenium的概要文件中。许多用户会觉得这是不可接受的。因此,它从指定的配置文件中创建一个新的临时概要文件,并在完成后删除它。在

解决方案

您不能给它任何标志来阻止删除临时概要文件。但是,您可以在调用.quit()方法之前保存它。删除临时配置文件goes的代码:

        try:
            shutil.rmtree(self.profile.path)
            if self.profile.tempfolder is not None:
                shutil.rmtree(self.profile.tempfolder)
        except Exception as e:
            print(str(e))

如果您将您的WebDriver分配给b,则可以执行以下操作:

^{pr2}$

需要使用ignore来避免复制一些会导致复制失败的锁文件。在

下面是一个完整的例子:

import shutil
from selenium import webdriver

profile = webdriver.FirefoxProfile(path_to_your_profile)
driver = webdriver.Firefox(profile)
driver.get("http://google.com")
shutil.copytree(driver.profile.path, "./here",
                ignore=shutil.ignore_patterns("parent.lock", 
                                              "lock", ".parentlock"))
driver.quit()

您需要将path_to_your_profile设置为实际路径。它将临时概要文件复制到脚本当前工作目录中名为here的子目录中。在

相关问题 更多 >