Selenium IE 驱动程序启动浏览器窗口并超时。疑似边缘“防跟踪”干扰

问题描述 投票:0回答:1

我有一个使用 Selenium 来自动收集数据的应用程序。截至上周,我的 IE 驱动程序代码已停止工作。我使用 IE 驱动程序,因为与我交互的设备都使用 IE8、IE11,因此它们无法在常规 MS Edge 中正确加载。最近,我们的 Edge 版本进行了更新,这对我的应用程序中的 Selenium 代码产生了负面影响。 IE 驱动程序实例启动浏览器,但超时。但是,如果我在 60 秒超时之前手动关闭边缘跟踪预防,IE 驱动程序代码将继续正常运行。

我已尝试测试此代码以符合 MS Edge。正如预期的那样,由于 SSL 证书不兼容 (ERR_SSL_KEY_USAGE_INCOMPATIBLE),我无法访问该网页。我可以通过手动打开 IE 模式并刷新页面来绕过这个问题(跟踪预防打开或关闭,并不重要),但这并不能解决我的问题。

有没有办法克服 IE 驱动程序中 MS Edge Tracking Prevention 的影响?

硒规格:

Selenium.WebDriver 版本 4.24.0

Selenium.WebDriver.IEDriver 版本 4.14.0

Selenium.支持版本4.24.0

MS Edge 规格:

Microsoft Edge128.0.2739.42(官方版本)(64 位)

修订版e015505d79c9432c75e2a9131c445776c61af592

铬版本128.0.6613.85

操作系统 Windows 10 版本 22H2(内部版本 19045.4780)

JavaScriptV8 12.8.36.6

这是相关代码。我尝试过使用和不使用

ieOptions.BrowserCommandLineArguments
来运行它。我也尝试过在没有初始 URL 的情况下启动。启动基本 IE 驱动程序实例会产生相同的结果:

var ieOptions = new InternetExplorerOptions
{
    AttachToEdgeChrome = true,
    EdgeExecutablePath = "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe",
    //ieOptions.PageLoadStrategy = PageLoadStrategy.Eager;
    IntroduceInstabilityByIgnoringProtectedModeSettings = true,
    InitialBrowserUrl = Url,
    IgnoreZoomLevel = true,
    RequireWindowFocus = false,
    //AcceptInsecureCertificates = true,
    //ForceCreateProcessApi = true,
};
ieOptions.BrowserCommandLineArguments = "--disable-features=msEnhancedTrackingPreventionEnabled --ignore-certificate-errors --allow-running-insecure-content --allow-insecure-localhost";
ieOptions.SetLoggingPreference(LogType.Browser, LogLevel.Off);
ieOptions.SetLoggingPreference(LogType.Client, LogLevel.Off);
ieOptions.SetLoggingPreference(LogType.Driver, LogLevel.Off);
ieOptions.SetLoggingPreference(LogType.Profiler, LogLevel.Off);
ieOptions.SetLoggingPreference(LogType.Server, LogLevel.Off);
var driverService = InternetExplorerDriverService.CreateDefaultService();
driverService.HideCommandPromptWindow = true;
IWebDriver driver = new InternetExplorerDriver(driverService, ieOptions);
driver.Manage().Window.Maximize();
c# selenium-webdriver microsoft-edge selenium-iedriver
1个回答
0
投票

我读了你的回复,我明白你的意思。我搜索了相关资源并做了一些测试,我可以为您提供以下建议:

  1. 我尝试以编程方式禁用“跟踪预防”,当我使用 selenium Edge 中的“EdgeOptions”类时,它起作用了。但我在 IEDriver 中没有找到任何方法来实现这一点。可能是因为 IEDriver 的选项设置与 EdgeDriver 的选项设置不同,无法通过命令行参数直接在 IEDriver 中禁用“跟踪预防”。

  2. 但是当我在Edge中部署“跟踪预防”策略时(TrackingPreventionOff(0)=关闭(无跟踪预防)),这个效果也可以成功应用到IEDriver上,即“跟踪预防”可以成功关闭当运行 selenium IE 驱动程序时。您可以参考此链接:Microsoft Edge浏览器策略文档|微软学习

  3. 如果您确定此问题是由于 Edge 更新到版本 128 引起的,您还可以将 Edge 回滚到之前的版本。您可以参考此链接:https://learn.microsoft.com/en-us/deployedge/edge-learnmore-rollback回滚Edge版本。当然。您还可以在 Edge 中按“Shift+Alt+I”提交反馈来报告此问题。开发人员可能会看到您的反馈并在未来版本中修复此问题。

© www.soinside.com 2019 - 2024. All rights reserved.