首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin UITest无法EnterText

Xamarin UITest无法EnterText
EN

Stack Overflow用户
提问于 2017-07-25 00:09:02
回答 1查看 1.9K关注 0票数 3

我是UITest新手,我刚出了门就撞到了墙上...我的Android form有一个继承自Xamarin.Forms.Entry的自定义控件"AccessCodeEntry“。XAML基本上看起来像这样...

代码语言:javascript
复制
<Label Grid.Row="0" Grid.Column="0" Text="{Translate AccessCodeLabel}" InputTransparent="false" HorizontalOptions="LayoutOptions.Center" VerticalOptions="LayoutOptions.CenterAndExpand"/>
<ContentView Grid.Row="1" Grid.Column="0">
    <local:AccessCodeEntry
        x:Name="AccessCodeEntry" 
        WidthRequest="215"
        HeightRequest="80"
        Text="{Binding AccessCode}"  
        Placeholder=" * * * * *"
        BackgroundColor = "White"
        HorizontalOptions = "LayoutOptions.Center"/>
</ContentView>

这将呈现为:Access Code label and textbox

下面是我的表单的树视图:

代码语言:javascript
复制
>>> tree
[[object CalabashRootView] > PhoneWindow$DecorView]
  [ActionBarOverlayLayout] id: "action_bar_overlay_layout"
    [FrameLayout > ... > RendererFactory_DefaultRenderer] id: "content"
      [RendererFactory_DefaultRenderer > RendererFactory_DefaultRenderer]
        [LabelRenderer]
          [FormsTextView] text: "Access Code:"
        [RendererFactory_DefaultRenderer > ... > EntryEditText]
      [RendererFactory_DefaultRenderer > CustomButtonRenderer]
        [Button] text: "Load Access Code"
      [RendererFactory_DefaultRenderer > ... > LabelRenderer]
        [FormsTextView] text: "Patient ID:"
    [ActionBarContainer] id: "action_bar_container"
      [ActionBarView] id: "action_bar"
        [LinearLayout > ActionBarView$HomeView] label: "Navigate up"
          [ImageView] id: "up"
          [ImageView] id: "home"
>>>

当我查询此控件时,无论是按文本、按类等...它总是返回该区域中心的坐标。这意味着我不能在文本框中点击,并且软键盘永远不会出现。当我尝试EnterText时,我总是收到等待键盘的超时异常。以下是一个示例查询结果:

代码语言:javascript
复制
>>> app.EnterText("Access Code:", "ABC12")
Using element matching Marked("Access Code:").
Tapping coordinates [ 238, 188 ].
Error while performing EnterText(Marked("Access Code:"), "ABC12")
Exception: System.TimeoutException: Timed out waiting for keyboard to be shown.
   at Xamarin.UITest.Shared.WaitForHelper.WaitFor(Func`1 predicate, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout)
   at Xamarin.UITest.Android.AndroidApp.<EnterText>c__AnonStorey6.<>m__0()
   at Xamarin.UITest.Utils.ErrorReporting.With(Action func, Object[] args, String memberName)
Exception: Error while performing EnterText(Marked("Access Code:"), "ABC12")
>>>

下面是我尝试过的其他查询,我基本上得到了相同的坐标和错误:

代码语言:javascript
复制
app.EnterText(c => c.Text("Access Code:"), "ABC12")
app.EnterText(c => c.Class("FormsTextView"), "ABC12")

我将模拟器设置为使用软键盘。有什么建议要怎么做吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-25 06:32:50

您查询的似乎是自定义控件顶部的标签,而不是条目本身。您应该能够将查询更改为直接查找条目:

代码语言:javascript
复制
app.EnterText(x => x.Class("EntryEditText"), "ABC12");

或者,您可以使用以下命令获取您的标签的兄弟项:

代码语言:javascript
复制
app.EnterText(x => x.Text("Access Code:").Parent(0).Sibling(), "ABC12");
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45285330

复制
相关文章

相似问题

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