91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Appium基于安卓的各種FindElement的控件定位方法實踐和建議

發布時間:2020-07-20 21:12:30 來源:網絡 閱讀:353 作者:zhukev 欄目:移動開發

AppiumDriver的各種findElement方法的嘗試,嘗試的目標應用是SDK自帶的Notepad應用。

1. findElementByName

1.1 示例

        el = driver.findElementByName("Add note");         assertThat(el.getText(),equalTo("Add note"));         

1.2 如何獲得Name

安卓設備沒有找到適合的方法,嘗試用Appium Inspector,但是使用了當前最新的“AppiumForWindows-1.2.3.1”沒有看到這個屬性,且Inspector在Windows下面非常的不穩定,很容易crash。真心期望Appium團隊盡快解決這個問題

iOS設備倒可以用Appium Inspector獲得(以下圖片來自網上)

Appium基于安卓的各種FindElement的控件定位方法實踐和建議

1.3 建議

個人建議可以嘗試先用view顯示的文本作為name看是否能拿到該控件,按照我個人的經驗一般都是會成功的,所以我很懷疑安卓上面控件的name是否就等于text。如果確實還是不行的話就只好放棄用name了。或者等待Appium后來的穩定的inspector發布后看是否可以獲得控件的name。

這個方法在Appium1.0之后其實已經過時而要被findElementByAccessibilityId取代得了,不知道為什么還能調用,猜想是Appium團隊想保留一定的兼容性以平滑過度吧。請查看:https://github.com/appium/appium/blob/master/docs/en/advanced-concepts/migrating-to-1-0.md

2. findElementByAndroidUIAutomator

2.1 示例

        el = driver.findElementByAndroidUIAutomator("new UiSelector().text(\"Add note\")");         assertThat(el.getText(),equalTo("Add note"));

2.2 如何獲得UIAutomator參數

UIAutomator獲取控件的方式多種多樣,都是通過UiSelector對象來去查找,比如使用view的text文本去當前窗口查找控件,這里不做累述,往后會另起一篇文章來描述UIAUtomator獲取控件的方式,到時直接套用進來就可以了。

3. findElementByClassName

3.1 示例

        el = driver.findElementByClassName("android.widget.TextView");         assertThat(el.getText(),equalTo("Add note"));

3.2 如何獲得控件的ClassName

可以使用UIAutomatorViewer工具直接查看

Appium基于安卓的各種FindElement的控件定位方法實踐和建議

3.3 建議

使用ClassName一般獲得的view都不止一個,所以應該需要遍歷一遍得到的views,然后縮寫搜索條件來獲得目標控件。示例中因為只有一個textview控件在窗口上面,所以不需要遍歷。

4. findElementById

4.1 示例

        el = driver.findElementById("android:id/title");         assertThat(el.getText(),equalTo("Add note"));

4.2 如何獲得Resource Id

可以通過UIAutomatorViewer獲得

Appium基于安卓的各種FindElement的控件定位方法實踐和建議

4.3 建議

如果目標設備的API Level低于18則UIAutomatorViewer不能獲得對應的Resource ID,只有等于大于18的時候才能使用。

5. findElementByAccessibilityId

5.1 示例

    	el = driver.findElementByAccessibilityId("menu_add_note_description");     	assertThat(el.getText(),equalTo("node"));

5.2 如何獲得AccessibilityId

可以通過UIAutomatorViewer或者Appium Inspector獲得

5.3 注釋

Accessibility ID在Android上面就等同于contentDescription,這個屬性是方便一些生理功能有缺陷的人使用應用程序的。比如我們有一個ImageView里面放置一張顏色復雜的圖片,可能一些色弱色盲的人,分不清這張圖片中畫的是什么東西。如果用戶安裝了輔助瀏覽工具比如TalkBack,TalkBack就會大聲朗讀出用戶目前正在瀏覽的內容。TextView控件TalkBack可以直接讀出里面的內容,但是ImageView TalkBack就只能去讀contentDescription的值,告訴用戶這個圖片到底是什么。
鑒于這是一個隱藏屬性,而Android上用于查找控件的各種屬性可能有所缺失或者有重復(比如id重復,比如一個list下面的所有項可能都是叫做“id/text1”),所以最佳的辦法就是跟開發團隊溝通好每個view都賦予一個唯一的contentDescription。

6. findElementByCssSelector

TBD, 這個方法應該是針對WebView容器下面的控件定位的,因為現在針對的是Native App暫時還沒有用到,所以先標記下,今后需要的時候加上去。

7. findElementByLinkText

TBD, 這個方法應該是針對WebView容器下面的控件定位的,因為現在這很對的是Native App暫時還沒有用到,所以先標記下,今后需要的時候加上去。

8. findElementByPartialLinkText

TBD, 這個方法應該是針對WebView容器下面的控件定位的,因為現在這很對的是Native App暫時還沒有用到,所以先標記下,今后需要的時候加上去。

9.findElementByTagName

這個方法Appium1.0以后已經過時并被以上的findElementByClassName取代了,請查看https://github.com/appium/appium/blob/master/docs/en/advanced-concepts/migrating-to-1-0.md

10.findEelementByXPath

10.1 示例

        el = driver.findElementByXPath("//android.widget.TextView[contains(@text,'Add note')]");         //el = driver.findElement(By.xpath("//android.widget.TextView"));         assertThat(el.getText(),equalTo("Add note"));

10.2 XPath格式變化

從老版本的Appium0.18.x升級到現在的Appium1.x后,注意class name和xpath策略的變化:你現在需要使用FQCN來描述你的控件。也就是說原來的:

findElementByXpath(""//TextView[contains(@text,'Add note')]"")

需要改成

findElementByXpath("//android.widget.TextView[contains(@text,'Add note')]")

詳細變動請查看Appium0.18.x遷移到Appium1.x須知事項

10.3參考

據說不是很穩定:https://github.com/appium/appium/issues/3371
bootstraponline commented on 13 Aug

sometimes uiautomator fails to create the dump.xml. A client side retry may help. I don't think there's much we can do about the problem until Google fixes uiautomator.

11. 終極方法:AppiumDriver getPageSource

最后介紹AppiumDriver的getPageSource函數,可以把當前頁面的元素以XML的方式打印出來,建議大家在找不到view的相應屬性的時候就調用該函數來慢慢查找了^_^Appium基于安卓的各種FindElement的控件定位方法實踐和建議


 

作者

自主博客

微信

CSDN

天地會珠海分舵

http://techgogogo.com


服務號:TechGoGoGo

掃描碼:

Appium基于安卓的各種FindElement的控件定位方法實踐和建議

向AI問一下細節

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

AI

五大连池市| 凤庆县| 南召县| 黄大仙区| 安国市| 齐齐哈尔市| 绥芬河市| 诸暨市| 商水县| 德惠市| 卓尼县| 义乌市| 敦煌市| 南汇区| 临湘市| 剑河县| 太原市| 金门县| 西平县| 梁平县| 离岛区| 永济市| 苍山县| 雷山县| 家居| 孝义市| 肥乡县| 嫩江县| 永城市| 营山县| 安化县| 宿州市| 榆树市| 林西县| 米泉市| 墨脱县| 胶南市| 双城市| 祥云县| 崇阳县| 平乐县|