Appium getText()从EditText返回android:提示值?

时间:2016-04-15 11:52:44

标签: android android-edittext automated-tests appium

我刚刚开始研究使用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()返回的值等于“在这里键入或粘贴文本”但是如果用户实际输入了那个确切的文本,我怎么知道它的区别?

1 个答案:

答案 0 :(得分:1)

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

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

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

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