如何解决汉堡菜单AutomationId用于UI测试
我正在尝试在页面(About.xaml)上运行UI测试。 以下是在应用程序加载时转到页面的步骤。
我的问题是,如何为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">
解决方法
欢迎您!
在研究之后,可以使用以下方法为汉堡菜单设置AutomationId
。
在 AppShell.xaml.cs 中:
public AppShell()
{
InitializeComponent();
FlyoutIcon.AutomationId = "FlyoutIcon";
//or
FlyoutIcon.SetValue(AutomationProperties.NameProperty,"FlyoutIcon");
}
注意:还需要为FlyoutIcon
设置一个值(例如:FlyoutIcon="xxx.png"
)使其起作用,否则上面的代码将发生错误 System.NullReferenceException :'对象引用未设置为对象的实例。'。
此外,这是无需点击汉堡菜单即可转到关于页面的方法。
您可以将TabBar添加到 AppShell.xaml ,并定义关于页面和其中的其他页面。
如下:
<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>
然后在 Test 方法中可以按以下步骤导航到所需页面:
app.Tap(x => x.Marked("About"));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。