如果已经打开浏览器Selenium Chromium / VB.NET / C#,Selenium Automation将失败

问题描述

我正在使用下面的VB.NET代码打开Edge Chromium(在IE功能模式下)。如果没有现有的Edge窗口打开,它将起作用;否则,它将在现有窗口中打开另一个选项卡,并显示这是WebDriver服务器的初始起始页面,并且没有任何反应(请参阅屏幕快照)下面)

    Dim ieService = InternetExplorerDriverService.CreateDefaultService(Environment.CurrentDirectory,"IEDriverServer.exe")
    Dim ieOptions = New InternetExplorerOptions
    ieOptions.IgnoreZoomLevel = True
    ieOptions.AddAdditionalCapability("ie.edgechromium",True)
    ieOptions.AddAdditionalCapability("ie.edgepath","C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe")
    Dim driver = New InternetExplorerDriver(ieService,ieOptions,TimeSpan.FromSeconds(60))
    driver.Navigate().GoToUrl("https://example.com")

enter image description here

一分钟后,它在行 Dim driver = New InternetExplorerDriver(ieService,TimeSpan.FromSeconds(60))

下方抛出异常

OpenQA.Selenium.WebDriverException:'对远程服务器的HTTP请求 URL http:// localhost:52074 / session的WebDriver服务器超时 60秒后。”

有人知道如何解决此问题吗? (我不想先终止边缘会话然后再开始,因为我希望现有的边缘窗口保持不变)

解决方法

在已经打开的Edge浏览器窗口中自动化Edge-IE。请按照以下步骤

  1. 将要在Edge-IE浏览器中尝试启动的应用程序包含到Edge浏览器的兼容性列表(edge:// compat)
  2. 在调用Edge-IE驱动程序初始化之前,包括以下命令行以启动Edge进程

代码示例

System.Diagnostics.Process.Start(@"msedge.exe","https://google.com/");
Thread.Sleep(1000);
var dir = "//path of your Edgedriver";
var driver = "IEDriverServer.exe";
if (!Directory.Exists(dir) || !File.Exists(Path.Combine(dir,driver))){
Console.WriteLine("Failed to find {0} in {1} folder.",dir,driver);}
var ieService = InternetExplorerDriverService.CreateDefaultService(dir,driver);
var ieOptions = new InternetExplorerOptions { };
ieOptions.AddAdditionalCapability("ie.edgechromium",true);
ieOptions.AddAdditionalCapability("ie.edgepath",@"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe");
InternetExplorerDriver webdriver = new InternetExplorerDriver(ieService,ieOptions,TimeSpan.FromMinutes(3));

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...