【问题标题】:Android textfield elements are tapable, but not editableAndroid 文本字段元素是可点击的,但不可编辑
【发布时间】:2020-04-14 11:06:07
【问题描述】:

我正在玩 Xamarin UITest,我注意到在我的 Android 设备(Samsung S10E,v.10)Xamarin UITest(v.3.0.7)上,当我点击输入文本元素时,我无法在里面输入文本那个元素。

输入元素通过输入字段内的光标聚焦并显示键盘,但没有输入文本。为了增加另一个级别的复杂性,即使从未输入过文本,我的测试也会通过并且不会失败。

这是我的代码:

app.WaitForElement(c => c.Class("UsernameID"));
            Thread.Sleep(3000);
            app.EnterText(c => c.Id("UsernameID"), "Password1");

另外,试过这个:

app.EnterText(c => c.TextField("LoginUserIDEntry"), "oaqa_Clark6_ps");

我插入了一个线程睡眠,以防键盘没有为 EnterText 调用及时加载。

相同的代码在 iOS 上运行良好。

我了解 Xamarin.UITest 不使用软键盘。相反,它在软键盘和应用程序之间注入自身并模拟按键。而 iOS 实际上模拟了键盘上的按键。

谁能告诉我这是语法问题、设备特定问题还是 Xamarin 问题?

【问题讨论】:

    标签: android xamarin xamarin.forms xamarin.uitest


    【解决方案1】:

    为了识别 xamarin 元素,您需要使用 x:Name or even AutomationId field in shared project xaml.

    Class 将尝试在原生 android 或 iOS 中通过 Class name 找到它。两个平台中的类名极不可能与您在第一个代码块中提到的相同。

    一般来说,你应该主要使用Marked应该可以工作 UITest projext

    <Entry x:Name="entryXName" AutomationId="entryAutoId" />
    
    app.EnterText(c => c.Marked("entryXName"), "oaqa_Clark6_ps");
    //by id
    app.EnterText(x=> x.Id("entryAutoId"),"foobarblahblackship");
    

    这里有完整的好文档on official site

    你也可以check sample

    我知道Thread.Sleep会阻塞UI主线程,你应该使用await Task.Delay

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 2011-08-02
      • 2020-11-29
      • 1970-01-01
      • 2022-12-17
      相关资源
      最近更新 更多