【问题标题】:Appium getText() returns android:hint value from EditText?Appium getText() 从 EditText 返回 android:hint 值?
【发布时间】:2016-04-15 20:34:06
【问题描述】:

我刚刚开始研究使用 Appium 来测试原生 Android 应用程序的自动化。在这个应用程序中,UI 的 XML 布局包含以下 EditText 控件声明:

<EditText
    android:id="@+id/inputText"
    android:layout_width="fill_parent"
    android:layout_height="0px"
    android:layout_weight="0.5"
    android:inputType="text|textMultiLine"
    android:hint="Type or paste text here"
    android:text="" />

当应用程序运行时,EditText 的文本值显然是空的,因此它会显示提示值(“在此处键入或粘贴文本”)。在我的测试用例中,如果我在这个 EditText 上调用 getText(),我得到的返回值不是我期望的空字符串。相反,我取回了 EditText 的提示值(“在此处键入或粘贴文本”)。这是我第一次使用 Appium,所以这可能是预期的行为。但如果是这种情况,如果 getText() 返回提示的值,我如何断言 EditText 的文本值实际上是空的?我想我可以断言 getText() 返回的值等于“在此处键入或粘贴文本”,但是如果用户实际输入了确切的文本,我怎么知道区别?

【问题讨论】:

    标签: android android-edittext automated-tests appium


    【解决方案1】:

    getText() 返回分配给要在 UI 线程呈现时显示的元素(在您的情况下为 android:hint)的任何值。

    在您的情况下断言,提示是一个未动态配置的文本,因此您可以将文本验证为

    if(element.getText().equals("Type or paste text here"))
      // hint being displayed
    else if(element.getText() == "")
     // the text is left empty
    

    现在如果用户可以配置与元素的提示相同的名称。您可能必须为应用程序提供更好的设计以避免这种情况。 Appium 可能只是一种媒介,可以为您提供反馈到应用程序 UI 中的信息。

    【讨论】:

    • 谢谢!您向我确认这是预期的行为,这很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 2011-07-20
    • 1970-01-01
    相关资源
    最近更新 更多