APP自動化(java和python)——參考——appium參考


參考文檔:https://www.cnblogs.com/glumer/p/8487622.html

參考文檔CSDN:https://blog.csdn.net/qq_29495473/article/details/91363189

一、Appium的介紹    

       Appium是一款開源的自動化測試工具,其支持iOS和安卓平台上的原生的,基於移動瀏覽器的,混合的應用。

1、 使用appium進行自動化測試的好處

       Appium在不同平台中使用了標准的自動化APIs,所以在跨平台時,不需要重新編譯或者修改自己的應用。

       Appium支持Selenium WebDriver支持的所有語言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl語言,更可以使用Selenium WebDriver的Api。Appium支持任何一種測試框架.Appium實現了真正的跨平台自動化測試。(本文主要介紹Python的用法)

2、Appium架構

      Appium 是一個用Node.js編寫的HTTP server,它創建、並管理多個 WebDriver sessions 來和不同平台交互,如 iOS ,Android等等. 

      Appium 開始一個測試后,就會在被測設備(手機)上啟動一個 server ,監聽來自 Appium server的指令. 每種平台像 iOS 和Android都有不同的運行、和交互方式。所以Appium會用某個樁程序“侵入”該平台,並接受指令,來完成測試用例的運行。

      下面直接開始正題,進行移動端自動化測試實戰。

 

二、Appium實戰(以真機為例)

       aapt dump badging D:\XXX.apk  獲取安裝包的所有信息

       adb devices(查看手機是否連接到電腦)

       adb shell pm list packages:列出所有的包名,找到所查看包的包名。

       adb shell dumpsys package com.android.XXX:查看某個包的具體信息

       其它:

       adb devices:查看Android設備是否連接到電腦。

       adb shell dumpsys activity:查看當前運行的是哪個activity,運行的一些進程等

       adb shell dumpsys activity activities

       adb shell pm list packages:列出所有的包名。

       adb shell dumpsys package:列出所有的安裝應用的信息

       adb shell dumpsys package com.android.XXX:查看某個包的具體信息

       adb shell dumpsys activity | grep mFocusedActivity:查看當前resume的是哪個activity

       adb logcat | grep ActivityManager:查看當前正在運行的Activity

       adb logcat | grep Displayed:查看當前正在運行的Activity

1、 連接真機或者模擬器(此處以真機為例)

       連接手機時注意選擇手機的開發者模式,cmd打開命令行窗口,輸入adb devices獲取到設備的deviceName。

       

2.獲取Activity

       cmd打開命令行窗口,輸入aapt dump badging D:\XXX.apk(xxx指安裝包名,D:\是指路徑)直接查看需要測試app安裝包的具體信息。

       

       標記的就是包名,繼續往下拖拽,可以找到activity的信息。

       

       這里的紅圈就可以看到activity的信息。這兩個值,在appium腳本中都需要提前獲取到,所以需要提前介紹這個獲取方法。如果你覺得在cmd里面不好看,你可以把cmd信息導出到一個txt文件,例如 aapt dump badging shoujibaidu.apk > 123.txt 回車后,會在桌面生成一個123.txt文件,你可以打開,通過查詢找到這些信息。通過上面的方法,只要我們有android SDK環境,那么我們就可以獲取到任意一個包的包名和Activity信息。

3.啟動Appium 

     1)  雙擊桌面上的appium圖標打開,點擊Android Settings進行設置。

     

     2)將上方獲取到的真機的deviceName填入 ,選擇platformName和platformVersion

     

      3)將服務的session配置成可重寫(非必要的配置)

       

      配置好后,點擊右上角的啟動按鈕進行啟動即可。

       

        啟動成功,下一步該寫代碼了。

4、將上方得到的設備和安裝包信息寫入腳本中

復制代碼
desired_caps = {
    'platformName': 'Android',
    'deviceName':'8TB6V4ZPZ54LPJ5P',
    'platformVersion': '5.1',
    'app': PATH(r'D:\shell_customer-debug.apk'),
    'appPackage': 'com.jyibb.shell_customer',
    'appActivity': 'com.jyibb.module_launch_customer.SplashActivity',    # 'unicodeKeyboard': 'True',#此兩行是為了解決字符輸入不正確的問題
    # 'resetKeyboard': 'True'   #運行完成后重置軟鍵盤的狀態
}
復制代碼

5、查找app定位元素

      啟動Android SDK中的一個神器可以查找app的定位元素進行腳本的編寫。在Android SDK中的tools中有一個uiautomatorviewer.bat,如下圖所示:

      

      點擊uiautomatorviewer.bat進行啟動,左上角一共四個按鈕,作用分別是打開本地文件、dump頁面、dump壓縮格式的頁面、保存;啟動后點擊左上角第三個圖標進行真機界面的呈現。

       

      第一次連接會比較慢,耐心等候一下,連接好后以后就快了。我這里以百度界面為例。

     

     這是連接真機后的界面顯示。這樣就可以根據id、class、text等定位元素進行定位了。

復制代碼
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.find_element_by_id("com.baidu.searchbox:id/baidu_searchbox").click()
driver.find_element_by_id("com.baidu.searchbox:id/SearchTextInput").clear()
driver.find_element_by_id("com.baidu.searchbox:id/SearchTextInput").send_keys('appium測試')

driver.find_element_by_id("float_search_or_cancel").click()
driver.find_element_by_id("floating_action_button").click()

driver.quit()
復制代碼

 

三.下方直接上完整代碼,以我自己的app為例

復制代碼
#coding:utf-8

from appium import webdriver
import time,os

PATH = lambda p:os.path.abspath(os.path.join(os.path.dirname(__file__),p))

#設備及安裝包信息
desired_caps = {
    'platformName': 'Android',
    'deviceName':'8TB6V4ZPZ54LPJ5P',
    'platformVersion': '5.1',
    'app': PATH(r'D:\shell_customer-debug.apk'),
    'appPackage': 'com.jyibb.shell_customer',
    'appActivity': 'com.jyibb.module_launch_customer.SplashActivity',
    # '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("com.jyibb.shell_customer:id/layout_main_header_mine").click()
time.sleep(5)

driver.find_element_by_id("com.jyibb.shell_customer:id/login_phone_number_p").send_keys('15000000000')
driver.find_element_by_id("com.jyibb.shell_customer:id/login_password_p").click()
driver.find_element_by_id("com.jyibb.shell_customer:id/login_password_p").send_keys("111111q")

time.sleep(5)
driver.find_element_by_id("com.jyibb.shell_customer:id/bt_login_p").click()
復制代碼

      至此運行腳本即可進行自動化測試。

  

 

 

      

 


免責聲明!

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



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