我试图在页面上运行UI测试(About.xaml)。下面是在应用程序加载时到达页面的步骤。
我的问题是,如何为AppShell的汉堡菜单(飞出菜单)设置自动化Id?
这是UI测试用例。
[Test]
public async Task AboutPage_UITest()
{
//Arange
app.EnterText("UsernameEntryId", "user1");
app.EnterText("PasswordEntryId", "Abc@123");
//Act
app.DismissKeyboard();
app.Tap(x => x.Marked("LoginButtonId"));
app.Tap(x => x.Marked("AppShellId"));
//app.Tap(c => c.Class("OverflowMenuButton")); I tried this as well but no luck.
await Task.Delay(30000);
app.Tap(x => x.Marked("AboutId"));
//Assert
var appResult = app.Query("EmailId").First(result => result.Text == "abc@example.com");
Assert.IsTrue(appResult != null, "Label is not displaying the right result!");
app.Screenshot("About Page");
}
在AppShell.xaml中,下面是最上面的部分。
<Shell xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
FlyoutHeaderBehavior="CollapseOnScroll"
Shell.ItemTemplate="{StaticResource FlyoutTemplate}"
Shell.MenuItemTemplate="{StaticResource FlyoutTemplate}"
FlyoutBackgroundColor="WhiteSmoke"
Navigating="OnNavigating"
Navigated="OnNavigated"
AutomationId="AppShellId"
x:Class="DemoApp.AppShell">
发布于 2020-09-01 09:24:14
欢迎来到这里!
在对此进行研究之后,您可以使用以下方法来设置汉堡菜单的AutomationId
。
在AppShell.xaml.cs中
public AppShell()
{
InitializeComponent();
FlyoutIcon.AutomationId = "FlyoutIcon";
//or
FlyoutIcon.SetValue(AutomationProperties.NameProperty, "FlyoutIcon");
}
备注:还需要为FlyoutIcon
设置一个值(例如:FlyoutIcon="xxx.png"
),否则上面的代码将出现错误System.NullReferenceException:“对象引用未设置为对象的实例”。
此外,还有,这是在不点击汉堡菜单的情况下去About页面的方法。
您可以向AppShell.xaml,中添加TabBar,并在其中定义About页面和其他页面。
如下所示:
<TabBar>
<Tab Title="About"
AutomationId="About"
Icon="tab_about.png">
<ShellContent>
<local:AboutPage />
</ShellContent>
</Tab>
<Tab Title="Browse"
AutomationId="Browse"
Icon="tab_feed.png">
<ShellContent>
<local:ItemsPage />
</ShellContent>
</Tab>
</TabBar>
然后在中,方法可以导航到您想要的页面,如下所示:
app.Tap(x => x.Marked("About"));
https://stackoverflow.com/questions/63677360
复制相似问题