欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Appium+python自動(dòng)化(十二)- Android

系統(tǒng) 1867 0

簡介

? ? ? 乍眼一看,小伙伴們覺得這部分其實(shí)在異性兄弟那里就做過介紹和分享了,其實(shí)不然,上次介紹和分享的大哥是uiautomatorviewer,是一款定位工具。今天介紹的是一個(gè)java庫,提供執(zhí)行自動(dòng)化測試的各種API。

  Android團(tuán)隊(duì)在4.1版本(API 16)中推出了一款全新的UI自動(dòng)化測試工具UiAutomator,用來幫助開發(fā)人員更有效率的完成App的Debug工作,同時(shí)對(duì)于測試人員也是一大福音,為什么這么說呢?

?
?

QA:“那個(gè)誰誰誰,我剛剛操作的時(shí)候,我發(fā)現(xiàn)了一個(gè)bug,你寫的App打開A頁面,再打開B頁面有時(shí)會(huì)出現(xiàn)閃屏問題。(內(nèi)心獨(dú)白:我去,這個(gè)奇怪的問題”

DEV:“嗯?還有這樣的問題,麻煩你復(fù)現(xiàn)給我看看。(內(nèi)心獨(dú)白:吹牛逼,我這么牛逼,我寫的App怎么會(huì)可能有bug,一定是你用的姿勢(shì)不對(duì))”

QA:一段忙碌的神操作之后...“咦,怎么不出現(xiàn)了?(內(nèi)心獨(dú)白:我去,怎么搞的啊,關(guān)鍵時(shí)刻掉鏈子,你倒是快點(diǎn)出來,讓我丟臉丟大發(fā)了)”

DEV:“那你先回去吧,復(fù)現(xiàn)再告訴我。(內(nèi)心獨(dú)白:呵呵,和我心里想的一樣,我寫的怎么可能會(huì)有bug呢)”

幾天過去了......

QA:滿心歡喜狀,那個(gè)誰誰誰“上次那個(gè)問題我復(fù)現(xiàn)了,操作給你看....我去,怎么又不出現(xiàn)了!(內(nèi)心獨(dú)白:一臉淫笑,我說有bug,你讓我復(fù)現(xiàn),這又回復(fù)現(xiàn)出來吧,剛想完。。。。。額。又看不到了,怎么搞的,氣死我)”

DEV:“是不是設(shè)備有問題,你換個(gè)設(shè)備再試試呢?(內(nèi)心獨(dú)白:小樣,都和你說了沒有bug你不信非要復(fù)現(xiàn))”

QA:“寶寶心里苦,但是寶寶不說!(內(nèi)心獨(dú)白:這個(gè)。唉。。。。。。。)”

有了UiAutomator之后:

QA:“我發(fā)現(xiàn)了一個(gè)bug,你寫的App打開A頁面,再打開B頁面有時(shí)會(huì)出現(xiàn)閃屏問題。”

DEV:“這個(gè)簡單,我用UiAutomator寫個(gè)測試用例,分分鐘解決。(內(nèi)心獨(dú)白:牛氣哄哄的)”

QA:“厲害了Word哥!(內(nèi)心獨(dú)白:真特么牛逼,愛死你了)”

全劇終!

UiAutomator提供了以下兩種工具來支持UI自動(dòng)化測試:

  • uiautomatorviewer:用來分析UI控件的圖形界面工具,位于SDK目錄下的tools文件夾中。

  • uiautomator:一個(gè)java庫,提供執(zhí)行自動(dòng)化測試的各種API。

1、android uiautomator text定位

  可能有人不知道為什么說android?uiautomator是終極定位,而且android?uiautomator和appium有什么關(guān)系呢?如果之前寫了一些腳本,發(fā)現(xiàn)有的時(shí)候一些元素不能夠很好的定位時(shí),那么就需要采用android?uiautomator去定位,它是一種非常強(qiáng)有力的定位方式,原理是通過android 自帶的android uiautomator的類庫去查找元素,都直接用官方公布出來的方法去找了還能找不到嗎?

  首先和宏哥一起看一下下面的圖片:

?

Appium+python自動(dòng)化(十二)- Android UIAutomator終極定位兇器(超詳解)_第1張圖片

?

在上面的圖片中我們不采用appium封裝好的方法,直接使用android 的uiautomator去定位結(jié)果如下:

            
              1
            
             user = 
            
              new
            
             Uiobject(
            
              new
            
             UiSelector().text(
            
              "
            
            
              請(qǐng)輸入淘寶賬戶
            
            
              "
            
            
              ))

            
            
              2
            
             user.setText(
            
              "
            
            
              test
            
            
              "
            
            )
          

  這兩句話看不懂也沒關(guān)系,因?yàn)槲覀兘酉聛碇v的是appium已經(jīng)對(duì)他進(jìn)行了封裝的方法,這里只是讓你看一下他原始方法是怎么做的。首先他會(huì)根據(jù)你的定位信息new一個(gè)對(duì)象出來,然后再在你new的對(duì)象之上進(jìn)行相關(guān)操作。下面我們看一下在appium中的實(shí)現(xiàn)方法:

            
              1
            
             ele = self.driver.find_element_by_android_uiautomator(
            
              '
            
            
              new UiSelector().text("請(qǐng)輸入淘寶賬戶")
            
            
              '
            
            
              )

            
            
              2
            
             ele.send_keys(
            
              "
            
            
              123
            
            
              "
            
            )
          

  對(duì)比兩種代碼的寫法,我們可以發(fā)現(xiàn)他們的相同之處只是最后的定位信息是一樣的,即:new UiSelector().text("請(qǐng)輸入淘寶賬戶"),這句話是什么意思呢?簡單的話就是根據(jù)一定條件來查找元素,我們這里的條件就是text屬性為“請(qǐng)輸入淘寶賬戶”,再根據(jù)圖片去理解是不是很容易呢?android uiautomator的元素定位其實(shí)和appium的定位一樣,或者說它比appium的定位方式更加多以及更加適用,并不是只有這一個(gè),它也不僅支持className、id等定位,而且還支持模糊匹配進(jìn)行定位,這樣是不是感覺更高大上呢?下面我們簡單介紹一下這幾種定位方式。

2 、uiautomator text模糊定位

  模糊定位故名思義,通過text的部分信息就能夠進(jìn)行定位,我們直接看代碼:

            
              1
            
             ele = self.driver.find_element_by_android_uiautomator(
            
              '
            
            
              new UiSelector().textContains("請(qǐng)輸入淘")
            
            
              '
            
            
              )

            
            
              2
            
             ele.send_keys(
            
              "
            
            
              123
            
            
              "
            
            )
          

  在上面的代碼中我們只是將.text()的方法變成了.textContains(),在方法中傳入模糊的數(shù)據(jù)就好。看到這里是否有人思考過一個(gè)問題,既然有類似的模糊尋找,那么有沒有像正則表達(dá)式一樣的查找呢?答案是肯定的,看我們下面的方法。

3、 textMatches 正則匹配查找

  textMatches故名思義就是通過正則的來進(jìn)行查找定位,他也是通過text的屬性來進(jìn)行正則匹配,我們直接看代碼:

            
              1
            
             ele = self.driver.find_element_by_android_uiautomator(
            
              '
            
            
              new UiSelector().textMatches("^請(qǐng)輸入淘.*")
            
            
              '
            
            
              )

            
            
              2
            
             ele.send_keys(
            
              "
            
            
              123
            
            
              "
            
            )
          

  上面匹配的一些信息可能一些剛做測試的小伙伴不是很了解,這個(gè)不要緊,下來可以搜索一下正則表達(dá)式教程,稍微了解一下就可以。

4、 uiautomator resourceID定位

  resourceId定位和appium封裝好的id定位是一樣的,只是這里將寫法變成了uiautomator的寫法而已,看下面代碼:

            
              1
            
            
              1
            
             ele = self.driver.find_element_by_android_uiautomator(
            
              '
            
            
              new UiSelector().resourceId("com.taobao.taobao:id/aliuser_login_account_et")
            
            
              '
            
            
              )

            
            
              2
            
            
              2
            
             ele.send_keys(
            
              '
            
            
              234
            
            
              '
            
            )
          

  通過上面的代碼和之前的代碼對(duì)比大家可能發(fā)現(xiàn)其實(shí)他們前面都是一樣的,只是在定位的時(shí)候發(fā)生了一些變化,text變換成了resourceID即可,也就是頁面對(duì)象屬性的信息進(jìn)行變更了,其他方法都是一樣。下面其他方法我就不浪費(fèi)篇幅,只給大家做一個(gè)簡單的案例展示。

5、 resourceIDMatches 定位

  通過id進(jìn)行正則匹配定位

            
              1
            
             ele = self.driver.find_element_by_android_uiautomator(
            
              '
            
            
              new UiSelector().resourceIdMatches(".+aliuser_login_account_et")
            
            
              '
            
            
              )

            
            
              2
            
             ele.send_keys(
            
              '
            
            
              234
            
            
              '
            
            )
          

6、uiautomator className定位

  通過調(diào)用android uiautomator使用className進(jìn)行定位

            
              1
            
             ele = self.driver.find_element_by_android_uiautomator(
            
              '
            
            
              new UiSelector().className("android.widget.EditText")
            
            
              '
            
            
              )

            
            
              2
            
             ele.send_keys(
            
              '
            
            
              234
            
            
              '
            
            )
          

7、 uiautomator classNameMatches定位

  通過className正則匹配進(jìn)行定位

            
              1
            
             ele = self.driver.find_element_by_android_uiautomator(
            
              '
            
            
              new UiSelector().classNameMatches (".*EditText")
            
            
              '
            
            
              )

            
            
              2
            
             ele.send_keys(
            
              '
            
            
              234
            
            
              '
            
            )
          

  通過上面的學(xué)習(xí)我相信大家對(duì)uiautomator的定位有一定的了解了,但是我想告訴大家的是這個(gè)并不是所有的,還有很多很多的定位方式,這個(gè)需要大家在以后不斷的學(xué)習(xí)中去積累,我也不可能把所有的方法都告訴大家,這里只是給大家一個(gè)起頭,但是我希望大家在學(xué)習(xí)定位的時(shí)候不只是看appium的定位,畢竟他也是封裝的uiautomator的定位方式,所以在學(xué)習(xí)appium的同時(shí)把uiautomator去大概學(xué)習(xí)一下這個(gè)很有幫助,并且對(duì)以后的提升自己以及工作中重新封裝appium有很大的幫助。

8、小結(jié)

1、以前運(yùn)行工具沒有問題。今天使用uiautomatorviewer 查看android某些頁面元素,出現(xiàn)錯(cuò)誤Error obtaining UI hierarchy? Reason: Error taking device screenshot: null 如圖:

Appium+python自動(dòng)化(十二)- Android UIAutomator終極定位兇器(超詳解)_第2張圖片

再網(wǎng)上找了很多解決辦法依然沒解決

宏哥總結(jié)了一下原因:

1、該app不支持該頁面的截屏功能所以u(píng)iautomatorviewer捕捉不到

2、手機(jī)需要重啟

3、非原裝數(shù)據(jù)線

4、appium服務(wù)異常需要重新連接

5、可以嘗試切換USB接口

6、最后可以把手機(jī)開發(fā)者選項(xiàng)的USB調(diào)試撤銷權(quán)限,在重新獲取

最后記住重啟再重啟解決一切問題,可能這次報(bào)錯(cuò)了,但是重啟之后就成功了,這個(gè)一般是沒地方說理的。

支持宏哥的朋友們和宏哥的宏粉記得點(diǎn)波推薦哦,您的肯定就是我進(jìn)步的動(dòng)力。宏哥先在這里給您道謝了,謝您嘞~~

個(gè)人公眾號(hào)

Appium+python自動(dòng)化(十二)- Android UIAutomator終極定位兇器(超詳解)_第3張圖片

? ? ? ? ? ? ?

?

?

?

?

微信群

Appium+python自動(dòng)化(十二)- Android UIAutomator終極定位兇器(超詳解)_第4張圖片

?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 成人性生交大片 | 国产精品伊人 | 国产成人在线一区二区 | www.成人.com | 色视频在线观看 | 日韩在线观看视频免费 | 亚洲精品乱码久久久久久v 国产高清免费视频 | 日韩精品一区在线 | 欧美日韩成人网 | 成人嫩草影院免费观看 | 99精品在线观看 | 毛片在线看片 | 久久久久国产精品人 | 国产色婷婷精品综合在线观看 | 69久久国产精品热88人妻 | 国产91小视频在线观看 | 天天天天 | 欧美精品在线免费观看 | 片在线观看 | 天堂网果冻传媒 | 国产成人综合一区二区三区 | 一区二区三区在线 | 久久精品亚洲欧美日韩精品中文字幕 | 欧美日韩亚洲在线 | 精品国产乱码一区二区三 | 久在线观看视频 | 亚洲精品性视频 | 欧美激情视频网站 | 欧美 国产 综合 | 天天色天天 | 日韩在线你懂的 | 免费成人在线网站 | 国产精品久久久久不卡 | 欧美激情免费在线 | 色五月婷婷成人网 | 中文字幕成人av | 久久久久亚洲一区二区三区 | 亚洲在线视频网站 | 99成人精品视频 | aa国产视频一区二区 | 日韩免费在线观看视频 |