python-appium安卓APP自動化環境搭建
安裝步驟總覽:
第一步:下載安裝包
- node.js
- java-sdk
- SDK Tools
- Appium
第二步:安裝node.js
- D盤新建文件夾“nodejs”
- 安裝時安裝到此文件夾即可
- 打開cmd輸入“node -v”顯示版本號即爲成功
第三步:安裝java-sdk
-
D盤新建文件夾“Java”和“Java_an”
-
安裝時 第一次輸入安裝路徑輸入“D:\Java” 第二次輸入安裝路徑輸入“D:\java_an”
-
安裝完成後進入“D:\java_an\bin”地址欄輸入cmd敲回車,打開cmd窗口。
-
輸入“java”和“javac”顯示相關內容即爲成功
java
javac
第四步:配置Java環境變量
一共配置三處環境變量
系統變量中,新建(1)
- [變量名 ] JAVA_HOME
- [變量值 ] D:\Java
系統變量中,新建(2)
- [變量名 ] CLASSPATH
- [變量值 ] .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
兩個環境變量配置方式一樣,注意一定要記得保存
用戶變量中的path變量中新增三條新建(1)
- [變量值 ] %JAVA_HOME%\bin
- [變量值 ] %JAVA_HOME%\jre\bin
注意:win環境是分別添加的如圖所示,win7環境是通過分號鏈接兩個變量值的,詳情請百度
驗證java的環境變量是否成功
- 直接運行系統cmd窗口
- 輸入“java”和“javac”顯示相關內容即爲成功
java
javac
第五步:SDK Tools和部分工具內容
- D盤新建文件夾“SDKTools”
- 安裝時安裝到此文件夾即可
- 安裝完成後進入“D:\SDKTools”打開“SDK Manager.exe”
- 安裝時只需要安裝這5個就行
第六步:配置ANDROID_HOME環境變量
系統變量中,新建(1)
- [變量名 ] ANDROID_HOME
- [變量值 ] D:\SDKTools
用戶變量中的path變量中新增三條新建(1)
- [變量值 ] %ANDROID_HOME%\tools
- [變量值 ] %ANDROID_HOME%\platform-tools
注意:添加配置的方式和java環境變量配置方法一樣,win環境是分別添加的如圖所示,win7環境是通過分號鏈接兩個變量值的,詳情請百度,記得點保存
驗證android的環境變量是否配置成功
- 直接運行系統cmd窗口
- 輸入“adb version”顯示相關內容即爲成功
adb version
第七步:安裝Appium和鏈接手機
- 直接安裝即可
第八步:鏈接手機進行調試
- usb數據線鏈接手機,打開手機usb調試(usb調試找不到請百度,模擬器鏈接方式下次說,這次先說真機)
- 獲取設備名稱
adb devices
,紅框兩面的就是
- 獲取手機安卓版本,
手機設置》關於手機》安卓版本
- 手機類型:Android
- 生成:json
{
"deviceName": "P7CDU18C04001791",
"platformVersion": "10.0.0",
"platformName": "Android"
}
- 啓動appium(不要改動默認填寫的東西)
-
輸入連接配置,連接手機。
-
連接成功
第九步:python代碼連接操作
連接方式和web端的selenium基本相同原理也十分近似,api也幾乎一樣,如果selenium掌握了那麼appium也是會很好掌握的。
樣例代碼和appium基本操作api
# -*- coding: utf-8 -*-
from appium import webdriver # 導入appium包
desc = {
"deviceName": "P7CDU18C04001791", # 手機設備名稱,adb devices
"platformVersion": "10.0.0", # 手機版本,在手機中:設置--關於手機
"platformName": "Android", # 手機類型,ios或android
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desc) # 訪問服務接口,並啓動手機app。url參數是當appium啓動後,默認訪問服務地址和接口
driver.implicitly_wait(10) # 設置隱式等待時間
driver.find_element_by_id('') # 通過id定位
driver.find_element_by_xpath('') # 通過xpath表達式定位
driver.find_element_by_class_name('') # 通過class名稱定位
driver.find_element_by_link_text('') # 通過元素文本定位
元素本文值 = driver.find_element_by_id('').text # 獲取元素的本文值
driver.find_element_by_id('').click() # 點擊元素
driver.find_element_by_id('').click() # 點擊元素
driver.find_element_by_id('').clear() # 清除元素輸入的內容
driver.find_element_by_id('').send_keys('輸入的內容') # 向元素內輸入內容
driver.back() # 進行返回操作
driver.quit() # 進行關閉鏈接操作
# 進行截圖操作,將截圖保存爲指定名稱並指定路徑
driver.get_screenshot_as_file(u'F:\\wifibanlv\\find_element\\image\\anjian01.png')
# 進行截圖操作,將截圖保存爲base64值
base64值 = driver.get_screenshot_as_base64()
# 進行截圖操作,指定名稱保存到當前腳本所在的文件夾,
driver.save_screenshot('anjian.png')
# 屏幕滑動操作
driver.execute_script("mobile:dragFromToForDuration",
{
"duration": 0.5,#滑動完成所需時間
"element": None,#指定元素
"fromX": 0,#x軸滑動開始位置
"fromY": 650,#y軸滑動開始位置
"toX": 0,#x軸滑動結束位置
"toY": 100})#y軸滑動結束位置
感謝各位的關注和支持,下次準備些關於unittest測試框架的應用,支持selenium和appium;對報告內容優化和報告中截圖相關事項解析,以及unittest測試框架基礎概念和相關api描述及應用。至此再次感謝。