gpt4 book ai didi

selenium - 为什么 Selenium 总是使用 Web 驱动程序创建临时的 Firefox 配置文件?

转载 作者:行者123 更新时间:2023-12-03 19:44:26 26 4
gpt4 key购买 nike

为什么 Selenium 总是使用 Web 驱动程序创建临时的 Firefox 配置文件,尽管我告诉它使用现有的配置文件?

根据 this answer无法阻止 Selenium 使用 Web 驱动程序创建临时 Firefox 配置文件。但是使用 chromedriver 我可以实现这一点。那么为什么它与 Firefox 不同。我查了 FirefoxProfile.cs Selenium repo并发现以下代码snipet用于复制配置文件---

public void WriteToDisk()
{
this.profileDir = GenerateProfileDirectoryName();
if (!string.IsNullOrEmpty(this.sourceProfileDir))
{
FileUtilities.CopyDirectory(this.sourceProfileDir, this.profileDir);
}
else
{
Directory.CreateDirectory(this.profileDir);
}

this.InstallExtensions();
this.DeleteLockFiles();
this.DeleteExtensionsCache();
this.UpdateUserPreferences();
}

但是对于 chorme没有这样的事情。

是不是因为 webdriver 安装了一个扩展 (webdriver.xpi) 来与 firefox 通信,而 chromedriver.exe 用于与 chrome 交互。

如果这是原因,在 3.0 版中,webdriver 使用 geckodriver.exe 与 firefox 通信。那么在 3.0 版之后,webdriver 将不再为 Firefox 创建临时配置文件?

更新:
今天我玩了 webdriver v 3.0+,发现关闭 legacymode 的最新版本仍在生成名为 的临时配置文件。 rust_mozprofile.wUqPXh48avDR .我的假设是这个临时配置文件是由 生成的geckodriver.exe 写在 Rust

我在 3 年前使用过 chromedriver,但不确定 chromedriver.exe 也会生成这种类型的临时文件。期待专家解答...

最佳答案

Firefox 驱动程序使用临时配置文件的主要原因是支持运行多个独立的 Firefox 并发实例的用例。有一次,当 Firefox 启动时,它会在配置文件目录中放置一个哨兵或锁定文件,如果用户尝试启动一个新的 Firefox 实例,它会检测到该文件,阻止他们这样做。不管 Firefox 是否仍然表现出这种行为,驱动程序仍然必须使用一些旧版本的浏览器,并且必须考虑到它。 Selenium 项目对 WebDriver 的这个问题的解决方案是,当用户想要使用特定的配置文件时,将该配置文件的内容复制到一个新目录,然后启动指向该副本的 Firefox。

听起来 Mozilla 的实现在很大程度上做了同样的事情。我猜这是出于同样的原因 - 支持多实例用例。

关于selenium - 为什么 Selenium 总是使用 Web 驱动程序创建临时的 Firefox 配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40521731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com