使用 Selenium C# 以私有模式打开 IE

Posted

技术标签:

【中文标题】使用 Selenium C# 以私有模式打开 IE【英文标题】:Open IE in private mode using Selenium C# 【发布时间】:2021-05-15 03:44:37 【问题描述】:

我想以私有模式打开 IE 浏览器以使用 Selenium webdriver c# 运行一组自动化测试用例。

我已使用以下选项以私密模式打开浏览器。

BrowserCommandLineArguments = "private",
ForceCreateProcessApi = true,

但它显示以下错误

Unexpected error launching Internet Explorer. Unable to use CreateProcess() API. To use CreateProcess() with Internet Explorer 8 or higher, the value of registry setting in HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\TabProcGrowth must be '0'..

谁能告诉我怎么解决?

【问题讨论】:

【参考方案1】:

我尝试用IE 11浏览器在Win 10上测试代码,发现代码运行正常。

            InternetExplorerOptions options = new InternetExplorerOptions()
            
                ForceCreateProcessApi = true,
                BrowserCommandLineArguments = "-private",
            ;
            IWebDriver driver = new InternetExplorerDriver(@"IE_driver_path_here...",options);
           
            driver.Navigate().GoToUrl("https://Your_URL_here...");

IE 11 中的输出:

从错误消息来看,注册表中TabProcGrowth 键的值似乎不是0,这是导致此错误的原因。

请参考以下步骤。

    启动注册表编辑器。 浏览到下面的路径。

Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main

    找到TabProcGrowth 键并双击它。 将其值设置为 0 并单击“确定”按钮。

然后,再次尝试运行代码。

【讨论】:

我已经在我的代码中添加了这些行并且还更新了新的注册表值。它显示新的错误。对远程 WebDriver 的 HTTP 请求在 60 秒后超时让我知道为什么会发生这种情况 Deepak 如果你知道,请帮忙。这对我有很大的帮助 浏览器也没有启动。 我使用了您提到的相同代码,并且我也更新了 TabProcGrowth 值。我面临新的错误。对远程 WebDriver 的 HTTP 请求在 60 秒后超时。浏览器也没有为我启动。我可以知道为什么吗? 从您的上一条评论中,我可以看到您在原始帖子中发布的错误已通过更新注册表值得到解决,现在您收到了一个新错误。我注意到您为该特定错误创建了一个新的thread。由于该线程的原始错误已解决,我建议您接受有用的建议作为该线程的答案,我们可以在您的其他线程上讨论新错误。 please see here。感谢您的理解。

以上是关于使用 Selenium C# 以私有模式打开 IE的主要内容,如果未能解决你的问题,请参考以下文章

如何使用selenium打开360浏览器

使用 c#、selenium 和 jquery 实现 IE 自动化 - 从动态表中随机获取

selenium2调用iedriver打开ie为啥点页面超链接没有反应呢

带有 java 关键字的机器人框架:Selenium.open(..) 以隐藏模式打开 Firefox 浏览器

带有 Selenium 私有模式的 FirefoxProfile

如何在 NUnit 测试框架上使用 selenium C# 在新的 Chrome 选项卡上打开 url