'Selenium 4 C# Edge IEMode - WindowHandles funtion does not increase number of handles when new browser window appears
I updated Selenium to 4. I test legacy app that runs only on IE. Now IE will be closed down and I need to switch to MS Egde in capability mode. My tests during execution need to switch to new browser windows and uses function IWebDriver.WindowHandles to do it (code below).
I had to add new options for a driver to run test on Edge like this:
var options = new InternetExplorerOptions();
options.AttachToEdgeChrome = true;
options.EdgeExecutablePath = @"\msedge.exe";
Then I use code like this to switch between browser windows:
public Context SwitchToNewIEWindow(string windowTitle, bool isEqual = true)
{
for (int i = 0; i < context.GetTimeout().Seconds; i++)
{
try
{
var ieWindowHandlers = context.GetDriver().WindowHandles;
foreach(var handler in ieWindowHandlers)
{
var window = context.GetDriver().SwitchTo().Window(handler);
bool condition = isEqual ? window.Title == windowTitle : window.Title.Contains(windowTitle);
if (condition)
{
context.SetDriver(window);
context.SetCurrentWindow(windowTitle);
return context;
}
}
}
catch (Exception)
{
context.Wait(1);
}
}
throw new Exception($"No window found with title: {windowTitle}");
}
In Selenium 3 everything works fine and WindowHandles function returns 2 handles. In Selenium 4 and IEDriver in Edge mode this function returns 1 handle.I have read https://github.com/SeleniumHQ/selenium/issues/8868 but in my case waiting a few seconds does not change anything. Even after a minute I still get only handle of first window. Any suggestions how to make it work properly again in Selenium 4.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|