如何防止Selenium3.0(Geckodriver)创建临时Firefox配置文件?
我正在使用Geckodriver运行最新版本的Selenium WebDriver。我想阻止Selenium在启动WebDriver的新实例时在临时文件目录中创建临时 Firefox 配置文件。相反,我想直接使用原始的 Firefox 配置文件。这有双重好处。首先,它节省了时间(将配置文件复制到临时目录需要花费大量时间)。其次,它确保在会话期间创建的 cookie 保存到原始配置文件中。之前硒开始依赖Geckodriver我能解决这个问题,通过编辑类中,如下图所示:FirefoxProfile.classSeleniumHQ
public File layoutOnDisk() {
File profileDir;
if (this.disableTempProfileCreation) {
profileDir = this.model;
return profileDir;
} else {
try {
profileDir = TemporaryFilesystem.getDefaultTmpFS().createTempDir("ABC", "XYZ");
File userPrefs = new File(profileDir, "user.js");
this.copyModel(this.model, profileDir);
this.installExtensions(profileDir);
this.deleteLockFiles(profileDir);
this.deleteExtensionsCacheIfItExists(profileDir);
this.updateUserPrefs(userPrefs);
return profileDir;
} catch (IOException var3) {
throw new UnableToCreateProfileException(var3);
}
}
}
当参数disableTempProfileCreation设置为 true时,这将阻止 Selenium 创建临时 Firefox 配置文件。
但是,现在 Selenium 由Geckodriver控制,此解决方案不再有效,因为 Firefox Profile 的创建(和启动)由Geckodriver.exe(用Rust语言编写)控制。如何使用Geckodriver实现相同的目标?我不介意编辑源代码。我正在使用 Java。
谢谢
重要更新:
我要感谢大家花时间回答这个问题。然而,正如一些评论中所述,前 3 个答案根本没有解决这个问题——有两个原因。首先,使用现有的 Firefox 配置文件不会阻止Geckodriver将原始配置文件复制到临时目录(如 OP 所示,并由以下一位或多位评论员明确说明)。其次,即使这样做了,它也与 Selenium 3.0 不兼容。
我真的不知道为什么 4 个答案中有 3 个会以完全相同的错误重复完全相同的答案。他们是否阅读了问题?即使试图解决手头问题的唯一答案是@Life 的答案很复杂,但它并不完整。谢谢。
THE END
二维码