Skip to content
44 changes: 14 additions & 30 deletions test/integration/Windows/MultiSelectControlTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ namespace Appium.Net.Integration.Tests.Windows
{
public class MultiSelectControlTest
{
private WindowsDriver _driver;
protected static WindowsDriver AlarmClockSession;
protected static WindowsDriver DesktopSession;

Expand All @@ -38,6 +37,7 @@ public void Setup()
appCapabilities.App = "Microsoft.WindowsAlarms_8wekyb3d8bbwe!App";
appCapabilities.PlatformName ="Windows";
appCapabilities.DeviceName = "WindowsPC";
appCapabilities.AddAdditionalAppiumOption("ms:experimental-webdriver", true);

var serverUri = Env.ServerIsRemote() ? AppiumServers.RemoteServerUri : AppiumServers.LocalServiceUri;

Expand All @@ -56,14 +56,11 @@ public void Setup()
new WindowsDriver(serverUri, desktopCapabilities);
Assert.IsNotNull(DesktopSession);

// Ensure app is started in the default main page
ReturnToMainPage();
}

[OneTimeTearDown]
public void OneTimeTearDown()
{
ReturnToMainPage();
SwitchToAlarmTab();

// Delete all created alarms
Expand All @@ -72,7 +69,10 @@ public void OneTimeTearDown()
{
/////// TODO - Implement for Appium
//// AlarmClockSession.Mouse.ContextClick(alarmEntry.Coordinates);
AlarmClockSession.FindElement(MobileBy.Name("Delete")).Click();
/// AlarmClockSession.FindElement(MobileBy.AccessibilityId("ContextMenuDelete")).Click();
/// For now Click and delete
alarmEntry.Click();
AlarmClockSession.FindElement(MobileBy.AccessibilityId("DeleteButton")).Click();
}

AlarmClockSession.Dispose();
Expand All @@ -90,6 +90,7 @@ public void FullMultiSelectScenario()
// Add an alarm at 1 minute after local time
SwitchToAlarmTab();
AddAlarm(localTimeText);
Thread.Sleep(300);
var alarmEntries = AlarmClockSession.FindElements(MobileBy.Name("Windows Application Driver Test Alarm"));
Assert.IsTrue(alarmEntries.Count > 0);
}
Expand All @@ -111,7 +112,7 @@ public string ReadLocalTime()
AlarmClockSession.FindElement(MobileBy.AccessibilityId("ClockButton"));
if (worldClockPivotItem != null)
{
localTimeText = AlarmClockSession.FindElement(MobileBy.AccessibilityId("WorldClockItemGrid")).Text;
localTimeText = AlarmClockSession.FindElement(MobileBy.AccessibilityId("TimeBlock")).GetDomAttribute("Name");
var timeStrings = localTimeText.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries);

foreach (var timeString in timeStrings)
Expand Down Expand Up @@ -141,9 +142,9 @@ public void AddAlarm(string timeText)
var period = alarmTime.ToString("tt", fi);

AlarmClockSession.FindElement(MobileBy.AccessibilityId("AddAlarmButton")).Click();
AlarmClockSession.FindElement(MobileBy.AccessibilityId("AlarmNameTextBox")).Clear();
AlarmClockSession.FindElement(MobileBy.AccessibilityId("AlarmNameTextBox"))
.SendKeys("Windows Application Driver Test Alarm");
var alarmNameBox = AlarmClockSession.FindElement(MobileBy.Name("Alarm name"));
alarmNameBox.Clear();
alarmNameBox.SendKeys("Windows Application Driver Test Alarm");
AppiumElement periodSelector = null;
try
{
Expand All @@ -154,11 +155,11 @@ public void AddAlarm(string timeText)
hourString = alarmTime.ToString("HH", fi);
}
periodSelector?.FindElement(MobileBy.Name(period)).Click();
AlarmClockSession.FindElement(MobileBy.AccessibilityId("HourLoopingSelector")).FindElement(MobileBy.Name(hourString)).Click();
AlarmClockSession.FindElement(MobileBy.AccessibilityId("MinuteLoopingSelector")).FindElement(MobileBy.Name(minuteString))
.Click();
AlarmClockSession.FindElement(MobileBy.AccessibilityId("HourPicker")).SendKeys(hourString);
AlarmClockSession.FindElement(MobileBy.AccessibilityId("MinutePicker")).Click();
AlarmClockSession.FindElement(MobileBy.AccessibilityId("MinutePicker")).SendKeys(minuteString);
Thread.Sleep(500);
AlarmClockSession.FindElement(MobileBy.AccessibilityId("AlarmSaveButton")).Click();
AlarmClockSession.FindElement(MobileBy.AccessibilityId("PrimaryButton")).Click();
}
}

Expand All @@ -175,22 +176,5 @@ public void DismissNotification()
{
}
}

private static void ReturnToMainPage()
{
// Try to return to main page in case application is started in nested view
try
{
AppiumElement backButton = null;
do
{
backButton = AlarmClockSession.FindElement(MobileBy.AccessibilityId("Back"));
backButton.Click();
} while (backButton != null);
}
catch
{
}
}
}
}