亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

為網上流行論點“UIAutomator不能通過中文文本查找控件”正名

發布時間:2020-06-30 16:16:32 來源:網絡 閱讀:270 作者:zhukev 欄目:移動開發

1. 問題描述和起因

相信大家學習UIAutomator一開始的時候必然會看過一下這篇文章。

  • Android自動化測試(UiAutomator)簡要介紹

因為你在百度輸入UIAutomator搜索的時候,該文章是排在第一位的。

但是里面有一段說法說UIAutomator不能支持通過中文文本查找控件,這個說法害人不淺,如果不是自己去實踐調查過,必然也會輕易放棄UIAutomator以及使用了它的Appium框架,因為本人現在工作上將要測試到的就是全部中文界面的app。

為網上流行論點“UIAutomator不能通過中文文本查找控件”正名

最為害人的還是文章中用紅色高亮來標志說明這個問題,雖然文章中有評論指出UIAutomator其實是支持中文搜索控件的,但我相信很多人會像我一樣一般技術文章只會看正文的。

2. 問題分析

做完我自己親自去編寫以下代碼去驗證這個問題,以下代碼的重點主要是最后幾行想通過中文來查找控件(假設該控件已經存在)

package majcit.com.UIAutomatorDemo;  import com.android.uiautomator.core.UiDevice; import com.android.uiautomator.core.UiObject; import com.android.uiautomator.core.UiObjectNotFoundException; import com.android.uiautomator.core.UiScrollable; import com.android.uiautomator.core.UiSelector; import com.android.uiautomator.testrunner.UiAutomatorTestCase; import static org.hamcrest.Matchers.*; import static org.hamcrest.MatcherAssert.assertThat;  public class NotePadTest extends UiAutomatorTestCase { 	 	 public void testDemo() throws UiObjectNotFoundException {   	        UiDevice device = getUiDevice(); 	        device.pressHome();   	        // Start Notepad 	        UiObject appNotes = new UiObject(new UiSelector().text("Notes"));  	        appNotes.click();   	        //Sleep 3 seconds till the app get ready 	        try {   	            Thread.sleep(3000);   	        } catch (InterruptedException e1) {   	            // TODO Auto-generated catch block   	            e1.printStackTrace();   	        }   	         	        //Evoke the system menu option 	        device.pressMenu(); 	        UiObject addNote = new UiObject(new UiSelector().text("Add note")); 	        addNote.click(); 	         	        //Add a new note 	        UiObject noteContent = new UiObject(new UiSelector().className("android.widget.EditText")); 	        noteContent.clearTextField(); 	        noteContent.setText("Note 1"); 	        device.pressMenu(); 	        UiObject save = new UiObject(new UiSelector().text("Save")); 	        save.click(); 	         	        //Find out the new added note entry 	        UiScrollable noteList = new UiScrollable( new UiSelector().className("android.widget.ListView"));   	        //UiScrollable noteList = new UiScrollable( new UiSelector().scrollable(true));  	        UiObject note = null; 	        if(noteList.exists()) { 	        	note = noteList.getChildByText(new UiSelector().className("android.widget.TextView"), "Note1", true);   	        	//note = noteList.getChildByText(new UiSelector().text("Note1"), "中文筆記", true);  	        } 	        else { 	        	note = new UiObject(new UiSelector().text("中文筆記")); 	        } 	        assertThat(note,notNullValue()); 	         	        note.longClick(); 	         	        UiObject delete = new UiObject(new UiSelector().text("Delete")); 	        delete.click(); 	           	    }    }
運行的時候也確實碰到了如下的問題:

為網上流行論點“UIAutomator不能通過中文文本查找控件”正名

當時看到log說"UiOjbectNotFoundException"的時候第一反應就是以上博客高亮指出的問題,以為確實如作者所說的存在這樣的問題。但自己換個角度想,這個UIAutomator是google弄的,不可能對unicode字符支持這么基礎的東西都有問題啊,所以幾經百度谷歌和詢問,可憐網上UIAutomator與此相關的資源有如鳳毛麟角,幾經艱辛才知道這個跟eclipse項目的Text file encoding選項有關系。現在往回想起,以上圖片出現亂碼的時候其實不應該先先入為主的認為引用博客的作者的說法是正確的,而應該像一網友“小吉”所說的應該先考慮是否是代碼文件的編碼的問題。

3.解決方案

如下圖,把項目默認的Text file encoding從GBK改成UTF-8,重新打包運行

為網上流行論點“UIAutomator不能通過中文文本查找控件”正名



 

作者

自主博客

微信

CSDN

天地會珠海分舵

http://techgogogo.com


服務號:TechGoGoGo

掃描碼:

為網上流行論點“UIAutomator不能通過中文文本查找控件”正名

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

琼海市| 岢岚县| 皮山县| 萍乡市| 咸阳市| 玉门市| 曲靖市| 砚山县| 远安县| 永宁县| 壤塘县| 调兵山市| 乐都县| 洮南市| 姜堰市| 高台县| 新密市| 高碑店市| 成安县| 柳江县| 牟定县| 化隆| 石景山区| 杭州市| 大荔县| 沙田区| 萨迦县| 陇南市| 雅江县| 临高县| 镇远县| 新丰县| 电白县| 兴化市| 台南市| 永安市| 临江市| 庆阳市| 伊金霍洛旗| 竹山县| 崇信县|