首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于用户界面测试的汉堡包菜单AutomationId

用于用户界面测试的汉堡包菜单AutomationId
EN

Stack Overflow用户
提问于 2020-08-31 19:54:53
回答 1查看 603关注 0票数 0

我试图在页面上运行UI测试(About.xaml)。下面是在应用程序加载时到达页面的步骤。

  1. 启动登录屏幕
  2. 用户输入用户名
  3. 用户输入密码
  4. 用户单击登录按钮
  5. 用户在AppShell中的主页上登陆。
  6. 用户单击“汉堡”菜单
  7. 用户单击“飞出”菜单项中的“关于”菜单。

我的问题是,如何为AppShell的汉堡菜单(飞出菜单)设置自动化Id?

这是UI测试用例。

代码语言:javascript
运行
复制
          [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中,下面是最上面的部分。

代码语言:javascript
运行
复制
        <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">
EN

Stack Overflow用户

发布于 2020-09-01 09:24:14

欢迎来到这里!

在对此进行研究之后,您可以使用以下方法来设置汉堡菜单的AutomationId

AppShell.xaml.cs

代码语言:javascript
运行
复制
public AppShell()
{
    InitializeComponent();
   
    FlyoutIcon.AutomationId = "FlyoutIcon";
    //or
    FlyoutIcon.SetValue(AutomationProperties.NameProperty, "FlyoutIcon");
}

备注:还需要为FlyoutIcon设置一个值(例如:FlyoutIcon="xxx.png"),否则上面的代码将出现错误System.NullReferenceException:“对象引用未设置为对象的实例”。

此外,还有,这是在不点击汉堡菜单的情况下去About页面的方法。

您可以向AppShell.xaml,中添加TabBar,并在其中定义About页面和其他页面。

如下所示:

代码语言:javascript
运行
复制
<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>

然后在中,方法可以导航到您想要的页面,如下所示:

代码语言:javascript
运行
复制
app.Tap(x => x.Marked("About"));
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63677360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档