Xamarin 用于UI测试的汉堡包菜单自动ID
我正在尝试在页面上运行UI测试(关于.xaml)。 下面是加载应用程序时进入页面的步骤Xamarin 用于UI测试的汉堡包菜单自动ID,xamarin,xamarin.forms,uitest,flyout,app-shell,Xamarin,Xamarin.forms,Uitest,Flyout,App Shell,我正在尝试在页面上运行UI测试(关于.xaml)。 下面是加载应用程序时进入页面的步骤 启动登录屏幕 用户输入用户名 用户输入密码 用户单击登录按钮 用户登录到AppShell的主页上 用户点击汉堡菜单 用户单击弹出菜单项中的“关于”菜单 我的问题是,如何设置AppShell的汉堡菜单(弹出菜单)的自动化Id 这是UI测试用例 [Test] public async Task AboutPage_UITest() { //Arange app.EnterTe
[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">
欢迎来到SO
研究之后,您可以使用以下方法设置汉堡包菜单的自动ID
在AppShell.xaml.cs中:
public AppShell()
{
InitializeComponent();
FlyoutIcon.AutomationId = "FlyoutIcon";
//or
FlyoutIcon.SetValue(AutomationProperties.NameProperty, "FlyoutIcon");
}
注意:还需要为弹出图标
设置一个值(例如:弹出图标=“xxx.png”
)使其正常工作,否则上述代码将出现错误System.NullReferenceException:“对象引用未设置为对象的实例。”
此外,这里是不点击汉堡包菜单进入关于页面的方法
您可以添加到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>
app.Tap(x => x.Marked("About"));
嗨,有一种方法可以做到这一点,当你有时间的时候,你可以看看我的答案。找不到弹出图标。@TS好的,Xamarin表单的版本是什么?如果不是最新版本,您可以将其更新为最新版本。此外,正如我的回答所说,您需要在Xaml中设置
弹出图标。不需要使用有效的弹出式图标
名称,因为此操作将使应用程序在运行时查找弹出式图标
的实例。也许这是Shell的一个限制。期待funture版本将对此进行优化。