python+appium自動化測試

安裝和配置

類型 內容 安裝步驟 驗證
android  jdk(java開發包)

1.找到8版本jdk下載並安裝

2.並在系統變量中添加

JAVA_HOME:C:\Program Files\Java\jdk1.8.0_231(jdk安裝路徑)

CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

path:%JAVA_HOME%\jre\bin(jre路徑)和%JAVA_HOME%\bin(bin路徑)

java -version

結果:出現版本信息

android sdk(軟件開發包)

1.可以直接下載安裝帶sdk的android studio

2.file>setting>搜索框輸入sdk查找sdk安裝路徑

3.添加系統變量

ANDROID_HOME:C:\Users\Rock\AppData\Local\Android\Sdk(sdk安裝路徑)

path:%ANDROID_HOME%\tools(tools路徑)

%ANDROID_HOME%\platform-tools(platform-tools路徑)

%ANDROID_HOME%\build-tools\29.0.3(build-tools路徑)

解決adb不是內部或外部指令

cmd裏輸入adb和aapt

結果:出現命令行幫助信息

android studio(開發工具) 下載並安裝  
genimotion(模擬器)

1.下載並安裝genimotion

2..android打開設置(Ctrl+Alt+S)

3..找到Plugins選項並點擊

4..在搜索欄輸入enymotion,然後點擊Search in repositories在線搜索

5.install

 
python python環境

1.下載地址:https://www.python.org/downloads/

2.安裝時勾選add python 版本 to path

python

出現python版本信息

pycharm編輯器    
.NET framework

.NET framework3.5(包括.NET2.0和)

.NET framework4.8 Advanced Services

設置路徑控制面板>程序>程序和功能>啓用或關閉windows功能  
appium appium客戶端

下載安裝appium客戶端

 
appium服務端 appium服務端:npm install -g appium --registry=https://registry.npm.taobao.org  
appium-doctror appium-doctror:npm install -g appium-doctor(安裝後可以檢查appium的環境配置情況)  
Appium-Python-Client 安裝Appium-Python-Client:pip install Appium-Python-Client  

adb命令

作用 adb命令 結果
查看包名 adb shell dumpsys window windows | findstr mFocusedApp

mFocusedApp=AppWindowToken{52a313dc token=Token{5289c48c ActivityRecord{529ad31c u0 com.example.myapplication/.MainActivity t10}}}

包名:com.example.myapplication

界面名:.MainActivity

發送文件

adb push 文件路徑 手機文件路徑

adb push  D:\testing\1.txt /sdcard

模擬器的fileManiger可以查看文件目錄

D:\testing\1.txt: 1 file pushed, 0 skipped. 0.0 MB/s (6 bytes in 0.157s)

/sdcard是所有設備都有的路徑

傳好後要在文件列表右下角展開按鈕,然後refresh刷新

從手機中拉取文件

adb pull手機文件路徑 電腦目錄

adb pull /sdcard/1.txt D:/testing

/sdcard/1.txt: 1 file pulled, 0 skipped. 0.0 MB/s (6 bytes in 0.002s)
app啓動時間 adb shell am start -W com.example.myapplication/.MainActivity

Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.myapplication/.MainActivity }
Warning: Activity not started, its current task has been brought to the front
Status: ok
Activity: com.example.myapplication/.MainActivity
ThisTime: 946
TotalTime: 946
Complete

946:0.946秒

thistimae:應用啓動時間(系統+application)

totalTime:界面啓動完成所需時間(系統+application+activity)

獲取手機日誌 adb logcat  
設備列表 adb devices  
adb重啓 adb kill-server 和adb start-server  

python代碼

類別 功能 代碼 解釋/例子
應用 啓動其他app

driver.start_activity(appPackage,appActivity)

driver.start_activity('com.android.mms','com.android.setting')

appPackage:程序包名,

appActivity:程序界面名

獲取包名 driver.current_package  
獲取界面名 driver.current_activity  
關閉app driver.close_app()  
關閉驅動對象 driver.quil()  
安裝app driver.install_app(app_path)  
卸載app driver.remove_app(app_id)  
判斷是否安裝app

driver.is_install_app(app_id)

driver.is_install_app(“cn.goapk.market”)

返回布爾值

將應用置於後臺 driver.background_app(second) 後臺停留多少秒,在後臺待多少秒再回到原界面
定位 定位元素一個元素

//class

driver.find_element_by_id(id_value)

//id

driver.find_element_by_class_name(class_value)

//xpath

driver.find_element_by_xpath(xpath_value)

element

id_value的值是resource-id的字符串形式,它可以在uiautomatorviewer裏查看

class_value可以在uiautomatorviewer裏查看

找不到元素會報錯

定位一組元素

//class

driver.find_elements_by_id(id_value)

//id

driver.find_elements_by_class_name(class_value)

//xpath

driver.find_elements_by_xpath(xpath_value)

elements

找不到元素會返回空列表

元素等待 隱式等待    
顯示等待    

python+appium案例

1.使用appium打開模擬器中軟件(前置代碼)

from appium import webdriver
import time

desired_caps = dict()
//手機參數:設備類型,模擬器(手機)版本,設備號(隨便寫)
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4'
desired_caps['deviceName'] = '192.168.56.101:5555'
//應用參數:程序包名,界面
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
//連接appium,獲取driver
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

time.sleep(5)

driver.quit()

2.查找元素

  • 步驟一:uiautomatorviewer查找元素

C:\Users\Rock\AppData\Local\Android\Sdk\tools\bin下打開uiautomatorviewer.bat

uiautomatorviewer運行不正常原因

點擊uiautomatorviewer菜單欄第二個按鈕報錯:原因是appium正在用adb,解決方法:先在cmd關閉adb再開adb

uiautomatorviewer閃退原因jdk版本不是8

  • 步驟二:在前置基礎上添加代碼
# 通過id查找一個元素
fun1 = driver.find_element_by_id("com.android.settings:id/switchWidget")
fun1.click()
# 通過class查找一個元素
fun1 = driver.find_element_by_class_name("")
# 通過xpath查找一個元素
fun1 = driver.find_element_by_xpath("")

# 通過id查找一組元素
fun1 = driver.find_elements_by_id("com.android.settings:id/switchWidget")
fun1[1].click()
# 通過class查找一組元素
fun1 = driver.find_elements_by_class_name("android.widget.TextView")
for tex1 in fun1:
    print(tex1.text)
# 通過xpath查找一組元素
fun1 = driver.find_elements_by_xpath("")

3.等待

time.sleep:直接睡眠模式,停止運行指定秒數

隱式等待:在等待時間後,如果出現了要查找的元素再進行後續操作,如果沒有出現則報錯(元素在指定時間內要出現)

顯式等待:每隔多少秒後再進行操作,超出時長報錯

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章