|
|
|
@ -151,7 +151,25 @@ namespace Avalonia.IntegrationTests.Appium |
|
|
|
if (delay is not null) |
|
|
|
Thread.Sleep((int)delay.Value.TotalMilliseconds); |
|
|
|
|
|
|
|
var newHandle = session.WindowHandles.Except(oldHandles).SingleOrDefault(); |
|
|
|
string? newHandle = null; |
|
|
|
IWebElement? newChildWindow = null; |
|
|
|
|
|
|
|
for (var i = 0; i < 10; ++i) |
|
|
|
{ |
|
|
|
newHandle = session.WindowHandles.Except(oldHandles).SingleOrDefault(); |
|
|
|
if (newHandle is not null) |
|
|
|
break; |
|
|
|
|
|
|
|
// If a new window handle hasn't been added to the session then it's likely
|
|
|
|
// that a child window was opened. These don't appear in session.WindowHandles
|
|
|
|
// so we have to use an XPath query to get hold of it.
|
|
|
|
var newChildWindows = session.FindElements(By.XPath("//Window")); |
|
|
|
newChildWindow = newChildWindows.Except(oldChildWindows).SingleOrDefault(); |
|
|
|
if (newChildWindow is not null) |
|
|
|
break; |
|
|
|
|
|
|
|
Thread.Sleep(100); |
|
|
|
} |
|
|
|
|
|
|
|
if (newHandle is not null) |
|
|
|
{ |
|
|
|
@ -164,20 +182,17 @@ namespace Avalonia.IntegrationTests.Appium |
|
|
|
session.SwitchTo().Window(oldHandle); |
|
|
|
}); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
// If a new window handle hasn't been added to the session then it's likely
|
|
|
|
// that a child window was opened. These don't appear in session.WindowHandles
|
|
|
|
// so we have to use an XPath query to get hold of it.
|
|
|
|
var newChildWindows = session.FindElements(By.XPath("//Window")); |
|
|
|
var pageSource = session.PageSource; |
|
|
|
var childWindow = Assert.Single(newChildWindows.Except(oldChildWindows)); |
|
|
|
|
|
|
|
if (newChildWindow is not null) |
|
|
|
{ |
|
|
|
return Disposable.Create(() => |
|
|
|
{ |
|
|
|
childWindow.SendKeys(Keys.Alt + Keys.F4 + Keys.Alt); |
|
|
|
newChildWindow.SendKeys(Keys.Alt + Keys.F4 + Keys.Alt); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
Assert.Fail("Could not find the newly opened window"); |
|
|
|
return Disposable.Empty; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
|