2016-04-15 78 views
3

我剛開始研究使用Appium進行原生Android應用程序的測試自動化。在這個應用程序,該UI的XML佈局包含了一個EditText控制以下聲明:Appium getText()從EditText返回android:hint值?

<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

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可能只是一種媒介,爲您提供反饋給應用程序用戶界面的信息。

+0

謝謝!你確定這是預期的行爲,這對我有很大的幫助。 – user685869