提问人:J.R. Bye 提问时间:8/11/2023 最后编辑:J.R. Bye 更新时间:8/11/2023 访问量:77
Selenium 测试不再使用 Chrome 驱动程序创建临时 Chrome 配置文件
Selenium test no longer creating a temporary Chrome profile using Chrome Driver
问:
我正在使用 C# 和 Visual Studio。我正在使用 Selenium.Support 和 Selenium.WebDriver 包的当前版本。
以前,当我在 Chrome 中运行 Selenium 测试时,默认情况下它会以临时配置文件打开。这将确保有一个新的会话,并且来自任何其他配置文件的 cookie 都不会潜在地污染测试结果。
自从将 Chrome 更新到版本 115 以来(我不确定这是原因。它只是相关。我不再看到这种行为。当我现在运行测试时,它会在现有窗口中打开一个新的空白选项卡,并且不会发生其他任何事情。我收到以下错误,可能是因为 Selenium 无法附加到现有会话。
OpenQA.Selenium.WebDriverException : unknown error: Chrome failed to start: exited normally.
(chrome not reachable)
(The process started from chrome location C:\Program Files\Google\Chrome\Application\chrome.exe is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
我尝试了许多Chrome选项的组合:
ChromeOptions options = new ChromeOptions();
options.AddArgument("no-sandbox");
options.AddArgument("disable-dev-shm-usage");
options.AddArgument("disable-gpu");
options.AddArgument("remote-debugging-port=9222");
//options.AddArgument("incognito");
options.AddArgument("start-maximized");
options.AddArgument("enable-automation");
options.AddArgument("test-type");
options.AddArgument("remote-allow-origins=*");
options.AddArgument("disable-notifications");
options.AddArgument("dns-prefetch-disable");
options.AddArgument("disable-features=NetworkService");
//options.AddUserProfilePreference("signin.allowed_on_next_startup", false);
//options.AddArgument("user-data-dir=C:\\profile");
//options.AddArgument("profile-directory=<Guest>");
//options.AddUserProfilePreference("detach", true);
options.AddUserProfilePreference("autofill.profile_enabled", false);
options.AddUserProfilePreference("profile.password_manager_enabled", false);
IWebDriver webDriver = new ChromeDriver(options);
使用隐身开关时也存在相同的行为。我已经添加和删除了调试端口并尝试了 0。没有运气。我已使用 user-data-dir 和 profile-directory 选项将其指向一个新的配置文件。它要么没有启动,要么确实启动了但没有工作。
运行测试的唯一方法是关闭所有 Chrome 窗口并运行测试。这允许测试创建一个新会话,并且它能够执行测试。这不是完美的想法,因为它使用了当前配置文件中存在的缓存和 cookie 以及内容。
为了解决这个问题,我试图完全卸载Chrome并删除所有文件并完全重新安装,但这没有帮助。我想强制测试创建一个新的临时配置文件,就像它在这里发生任何更改之前所做的那样。我已经阅读了我在这个网站上能找到的所有内容以及许多其他内容,但我找不到任何真正回答这个问题的东西。我考虑过降级,但 Google 不会将旧的 Chrome MSI 留在那里,我不想在我的工作计算机上下载二手 MSI 并导致安全问题。
任何帮助将不胜感激。
更新: 我添加了
options.AddArgument("guest");
它确实以访客身份打开会话,但实际上仍未执行测试。它只是一个空选项卡。
答: 暂无答案
评论