MenuTests.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. using System.Threading;
  2. using OpenQA.Selenium;
  3. using OpenQA.Selenium.Appium;
  4. using OpenQA.Selenium.Interactions;
  5. using Xunit;
  6. namespace Avalonia.IntegrationTests.Appium
  7. {
  8. [Collection("Default")]
  9. public class MenuTests
  10. {
  11. private readonly AppiumDriver<AppiumWebElement> _session;
  12. public MenuTests(TestAppFixture fixture)
  13. {
  14. _session = fixture.Session;
  15. var tabs = _session.FindElementByAccessibilityId("MainTabs");
  16. var tab = tabs.FindElementByName("Menu");
  17. tab.Click();
  18. var reset = _session.FindElementByAccessibilityId("MenuClickedMenuItemReset");
  19. reset.Click();
  20. var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
  21. Assert.Equal("None", clickedMenuItem.Text);
  22. }
  23. [Fact]
  24. public void Click_Child()
  25. {
  26. var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem");
  27. rootMenuItem.SendClick();
  28. var childMenuItem = _session.FindElementByAccessibilityId("Child1MenuItem");
  29. childMenuItem.SendClick();
  30. var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
  31. Assert.Equal("_Child 1", clickedMenuItem.Text);
  32. }
  33. [Fact]
  34. public void Click_Grandchild()
  35. {
  36. var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem");
  37. rootMenuItem.SendClick();
  38. var childMenuItem = _session.FindElementByAccessibilityId("Child2MenuItem");
  39. childMenuItem.SendClick();
  40. var grandchildMenuItem = _session.FindElementByAccessibilityId("GrandchildMenuItem");
  41. grandchildMenuItem.SendClick();
  42. var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
  43. Assert.Equal("_Grandchild", clickedMenuItem.Text);
  44. }
  45. [PlatformFact(TestPlatforms.Windows)]
  46. public void Select_Child_With_Alt_Arrow_Keys()
  47. {
  48. new Actions(_session)
  49. .KeyDown(Keys.Alt).KeyUp(Keys.Alt)
  50. .SendKeys(Keys.Down + Keys.Enter)
  51. .Perform();
  52. var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
  53. Assert.Equal("_Child 1", clickedMenuItem.Text);
  54. }
  55. [PlatformFact(TestPlatforms.Windows)]
  56. public void Select_Grandchild_With_Alt_Arrow_Keys()
  57. {
  58. new Actions(_session)
  59. .KeyDown(Keys.Alt).KeyUp(Keys.Alt)
  60. .SendKeys(Keys.Down + Keys.Down + Keys.Right + Keys.Enter)
  61. .Perform();
  62. var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
  63. Assert.Equal("_Grandchild", clickedMenuItem.Text);
  64. }
  65. [PlatformFact(TestPlatforms.Windows)]
  66. public void Select_Child_With_Alt_Access_Keys()
  67. {
  68. new Actions(_session)
  69. .KeyDown(Keys.Alt).KeyUp(Keys.Alt)
  70. .SendKeys("rc")
  71. .Perform();
  72. var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
  73. Assert.Equal("_Child 1", clickedMenuItem.Text);
  74. }
  75. [PlatformFact(TestPlatforms.Windows)]
  76. public void Select_Grandchild_With_Alt_Access_Keys()
  77. {
  78. new Actions(_session)
  79. .KeyDown(Keys.Alt).KeyUp(Keys.Alt)
  80. .SendKeys("rhg")
  81. .Perform();
  82. var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
  83. Assert.Equal("_Grandchild", clickedMenuItem.Text);
  84. }
  85. [PlatformFact(TestPlatforms.Windows)]
  86. public void Select_Child_With_Click_Arrow_Keys()
  87. {
  88. var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem");
  89. rootMenuItem.SendClick();
  90. new Actions(_session)
  91. .SendKeys(Keys.Down + Keys.Enter)
  92. .Perform();
  93. var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
  94. Assert.Equal("_Child 1", clickedMenuItem.Text);
  95. }
  96. [PlatformFact(TestPlatforms.Windows)]
  97. public void Select_Grandchild_With_Click_Arrow_Keys()
  98. {
  99. var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem");
  100. rootMenuItem.SendClick();
  101. new Actions(_session)
  102. .SendKeys(Keys.Down + Keys.Down + Keys.Right + Keys.Enter)
  103. .Perform();
  104. var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
  105. Assert.Equal("_Grandchild", clickedMenuItem.Text);
  106. }
  107. [PlatformFact(TestPlatforms.Windows)]
  108. public void Child_AcceleratorKey()
  109. {
  110. var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem");
  111. rootMenuItem.SendClick();
  112. var childMenuItem = _session.FindElementByAccessibilityId("Child1MenuItem");
  113. Assert.Equal("Ctrl+O", childMenuItem.GetAttribute("AcceleratorKey"));
  114. }
  115. [PlatformFact(TestPlatforms.Windows)]
  116. public void PointerOver_Does_Not_Steal_Focus()
  117. {
  118. // Issue #7906
  119. var textBox = _session.FindElementByAccessibilityId("MenuFocusTest");
  120. textBox.Click();
  121. Assert.True(textBox.GetIsFocused());
  122. var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem");
  123. rootMenuItem.MovePointerOver();
  124. Assert.True(textBox.GetIsFocused());
  125. }
  126. }
  127. }