对于自动化项目,我必须使用带有edge的selenium webdriver。不幸的是,该网站是在IE内核下。所以我在IE模式下启动edge,一切都很好。但是,当控制器需要使用windowHandle检测新窗口时,即使等待也不会检测到任何新窗口。有可能使交换机在IE模式下工作吗?
PS:当我使用IE驱动程序时,我可以通过更改几行来启动IE。当我运行IE时,窗口更改就完成了。当我使用选项运行Edge时,我不会检测到任何东西。所以IE浏览器一切都很好,问题只来自边缘和IE模块。
我使用的IE驱动程序的功能如下:
var ieService = InternetExplorerDriverService.CreateDefaultService(dir, driver);
var ieOptions = new InternetExplorerOptions{};
ieOptions.AddAdditionalCapability("ie.edgechromium", true);
ieOptions.AddAdditionalCapability("ie.edgepath", "{path to msedge.exe}");
var webdriver = new InternetExplorerDriver(ieService, ieOptions, TimeSpan.FromSeconds(30));
driver.FindElement(By.Id("button")).Click();
Thread.Sleep(2000);
string popupHandle = string.Empty;
ReadOnlyCollection<string> windowHandles = driver.WindowHandles;
foreach (string handle in windowHandles)
{
if (handle != existingWindowHandle)
{
popupHandle = handle;
break;
}
}
driver.SwitchTo().Window(popupHandle);
现在已经解决了。您可以下载最新的Selenium 4.0版本,并在IE模式下开始为Edge编写脚本。您也可以在github中的以下链接中关注IE模式中的MS Edge中的问题票证