appium自動化測試之UIautomatorviewer元素定位


appium自動化測試之UIautomatorviewer元素定位

標簽(空格分隔): uiautomatorviewer元素定位


前面的章節,已經總結了怎么搭建環境,怎樣成功啟動一個APP了,這里具體介紹一下關於UIautomatorviewer的元素定位:

所有的關於自動化的測試,其實都是通過定位頁面的元素,識別元素來,來操作進行界面的操作,從而進行判斷是否符合一個預期的結果的;

下邊主要介紹一個uiautomatorviewer這個工具,uiautomatorviewer是Android-sdk自帶的一個元素定位工具,非常好用,使用UIautomatorviewer,你可以查看一個應用的UI來查看應用的布局和組件以及相關的屬性;

  • 啟動UIautomatorviewer.bat文件:
    打開對應的安裝sdk的目錄,找到對應的tools文件(mac電腦的同學:/Users/用戶/Library/Android/sdk/tools/bin目錄下,我也找了好久),然后打開:uiautomatorviewer.bat文件:image.png-154.6kB
  • 雙擊:.bat文件
    image.png-24.1kB
  • cmd adb devices
    查看設備是否連接上,然后點擊uiautomatorviever界面的第二個控件:
    image.png-42.3kB
  • 可以通過鼠標的移動定位具體的元素:image.png-547.8kB
  • 右下角是一些元素的定位屬性:image.png-41.9kB
  • 前面寫過的關於:啟動APP的,還有一些appium配置的,這里不再贅述了,大家自行研究,要知道這段代碼都差不多:
desired_caps = {
            "platformName": "Android",
            #小米手機
            # "deviceName": "09630c80",
            # "platformVersion": "4.4.4",
            #360手機
            "deviceName": "8681-M02-0x253b1876",
            "platformVersion": "5.1",
            "appPackage": "*****",
            "appActivity": "*****",
            "unicodeKeyboard":True,
            "resetKeyboard":True}
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
time.sleep(5)
driver.find.element_by_id("***").click()

  • appium 的webdriver提供了11種,常規的元素的定位方法,在selenium的基礎上擴展了三個,可以在pycharm里面輸入,driver.find_element_by然后會自動的匹配出來
    image.png-181.3kB

如圖所示的多的三種地位方式,第三個是iOS的用的,我們可以先不考慮;
uiautomatorviewer是Android自帶的,其實apium自己也可以有自己的定位方式:inspector

其實:我感覺Mac電腦用appium的inspector很好用,但是Windows就不太好用了,inspector是appium自己帶的一款定位工具:

設置appium
1.先不用啟用appium
2.點開Android setting界面(機器人圖標)
3.勾選ApplicationPath ,添加到被測APP的路徑
4.Devices name處添加設備名稱(adb devices 查看到的)
image.png-123.6kB

通過上述的方法可以查看:apk的包名,和LaunchActivity
例如:淘寶APP
image.png-84.2kB

二、開啟appium
    1.手機確保連接電腦(adb devices查看)
    2.點appium右上角三角形圖標,會啟動服務
    3.這時候可以看到手機上安裝淘寶應用,並會啟動淘寶
    4.點appium右上角的搜索圖標
    5.點Inspector Window界面的 Refresh 按鈕刷新界面

三、Ispector Window
    1.手機上打開需要單位元素的界面,然后點Refresh按鈕刷新
    2.左邊菜單樹,可以挨個點開
    3.如果想單位界面上的“是”和“否”按鈕,從菜單樹就可以看到這兩個元素的結構

Remote遠程控制:

代碼的開始:driver = webdriver.Remote('http://192.168.1.1:4723/wd/hub',
desired_caps)很多人不知道是怎么來的?

這里簡單介紹一下:

一般來說appium中127.0.0.1這個地址的默認的不需要修改。在做自動化過程中,如果遇到需要遠程操作的話,這個功能就可以派上用場了。想想看,如果公司給你單獨配置一台跑自動化測試電腦,然后自己工作的電腦寫腳本,在自動化機器上運行腳本,這樣工作自動化兩不誤,是不是很爽呢?

設置IP:
1.打開appium>General Setting界面
image.png-109.4kB
2.這里用個appium默認的服務端地址127.0.0.1端口4723,一般在自己機器上調試,無需修改
二、訪問地址
    1.代碼里面的那個地址到底指向的是哪里呢?
啟動appium服務后,在瀏覽器輸入:http://127.0.0.1:4723/wd/hub。出現如下圖所示,說明服務啟動成功,可以把appium看出是一個服務端。

image.png-49.2kB
三、配置測試機
    1.一台工作電腦,一台跑自動化測試的電腦,如何用工作的電腦遠程控制自動化測試的那台電腦呢?
    2.測試電腦上的appium服務地址改成本機IP地址如:172.17.1.165(這里要是本機的ip地址!!!!!)

image.png-119.2kB
3.啟動測試電腦上的appium。
image.png-106kB
四、遠程操作
    1.在自己工作電腦上打開瀏覽器輸入:172.17.1.165:4723/wd/hub。這一步很重要,一定要看到如下界面,確認遠程鏈接成功。

image.png-47.5kB

同時代碼里面的IP也要對應的修改一下;
3.以上環境准備好后,在測試機器上運行腳本,於是測試機器上可以自動運行了;

輸入中文的問題:

在做APP的自動化測試時候,我們會遇到輸入中文的問題,那怎么版本呢?

我們可以采取:屏蔽軟件盤,繞過手機軟件盤的方法,解決輸入中文的問題;
通常我們會使用:元素.send_keys(u"hao")
2.運行腳本:
首先我們要確認手機的輸入法是什么輸入法,如果默認是中文的輸入法,啟動后出現下面的情況,無法輸入成功;
image.png-39.8kB
3.於是我們可以吧手機的輸入法變成英文輸入法,那么我們就不能輸入中文了,那要怎么辦呢?

屏蔽軟件鍵盤:
1.通過前面的操作,大概可以知道,在APP里面輸入字符串,是調用的是軟鍵盤輸入的,有沒有辦法像selenium一樣,直接send_keys繞過鍵盤輸入呢?
2.於是可以想辦法屏蔽軟鍵盤,只需要在desired_caps{}設置里面加兩個參數()

from appium import webdriver
import time
desired_caps={
        'platforName':'Android'
        'deviceName':'*****'
        'platformVersion':'5.0'
        'appPackage':'****'
        'appActivity':'***'
        'unicodeKeyboard':True
        'resetKeyboard':True}

注意:
unicodeKeyboard是使用unicode編碼方式發送字符串;
resetKeyboard是將鍵盤隱藏起來;

使用上述的代碼后:
在send_keys(u'學習測試')

注意2:輸入使用真機測試時候,發現測試完畢之后,輸入不能用了,這時候怎么辦呢?
答案:
我們需要進入到設置--輸入法設置,把對應的輸入法修改過來,就可以了,修改為系統的,或者自己常用的就行了;
image.png-48.7kB


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM