一、配置環境
1.Android環境搭建

2.Appium環境搭建

二、打開appium server,推薦使用桌面版本即可;
這里我們用默認配置,點擊開始按鈕啟動server

三、連接真機,使用adb devices來查看連接設備

四、我們使用python作為client端來操作,代碼如下:
打開設備上的應用
1 from appium import webdriver 2 import os 3 4 #系統命令行 輸入adb命令,安裝apk到手機/模擬器 5 # os.system(r'adb install D:\1-qyk\4-學習資料\XYAssessment-v2.1.0.apk') #使用了app命令可以不執行這條 6 7 #組裝參數 代碼要操作哪個設備上的哪個APP 8 desired_caps={} 9 desired_caps['platformName']='Android' #系統名稱,Windows只能操作安卓,IOS先按下不表 10 11 #使用adb devices命令可以查看已連接的設備; 12 #有多個執行機已連接時,要選擇執行設備,以下三個參數要填寫正確 13 desired_caps['platformVersion'] = '9' #使用命令adb shell getprop ro.build.version.release 查看 14 desired_caps['deviceName'] = '3EP7N18B16022249' #這是huawei mate 20 設備名 15 desired_caps['udid'] = '3EP7N18B16022249' #填一樣的 16 17 # desired_caps['platformVersion'] = '6.5.0' 18 # desired_caps['deviceName'] = '127.0.0.1:62001' 19 # desired_caps['udid'] = '127.0.0.1:62001' 20 21 #如果已經安裝了包,用以下兩個參數打開app 22 desired_caps['appPackage']='com.xinyan.assessmentsdk' #APP包名 23 desired_caps['appActivity']='riskassessmentsdk.xinyan.com.xyriskassessmentsdk.InputActivity' #adb shell "logcat | grep START" 輸入命令后再啟動App,查看最新的輸出 24 25 #使用app參數,每次都會安裝新的包;如果用它,最開始的命令可以不執行 26 desired_caps['app'] = r'D:\1-qyk\4-學習資料\XYAssessment-v2.1.0.apk' 27 28 #將連接appium server的地址(這里使用默認的端口,如果要多開可以自己修改端口),以及之前組裝的參數傳入 29 driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps) 30 31 print('success') 32 33 driver.quit()
unittest+appium執行案例
import os
import json
import yaml
from time import sleep
import unittest
from appium import webdriver
# Returns abs path relative to this file and not cwd
PATH = lambda p: os.path.abspath(
os.path.join(os.path.dirname(__file__), p)
)
with open(r'start_configuration',encoding='utf-8') as fp:
config=yaml.full_load(fp)
class SimpleAndroidTest(unittest.TestCase):
def setUp(self):
desired_caps = {}
desired_caps['platformName'] = 'Android'
#夜神模擬器配置
desired_caps['platformVersion'] = config['夜神']['platformVersion']
desired_caps['deviceName'] = config['夜神']['deviceName']
desired_caps['udid'] = config['夜神']['udid']
desired_caps['appPackage'] = 'com.xinyan.assessmentsdk' # APP包名
desired_caps['appActivity'] = 'riskassessmentsdk.xinyan.com.xyriskassessmentsdk.InputActivity' # 啟動的主Acitivity名
desired_caps['unicodeKeyboard'] = 'True' # 使用Unicode編碼方式發送字符串
desired_caps['resetKeyboard'] = 'True' # 隱藏鍵盤
try:
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
except:
desired_caps['app'] = PATH(r'D:\1-qyk\4-學習資料\XYAssessment-v2.1.0.apk')
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
def test_click_nextstep(self):
'''冒煙,點擊下一步進入第二頁面成功'''
el = self.driver.find_element_by_class_name('android.widget.Button')
el.click()
el=self.driver.find_elements_by_accessibility_id('com.xinyan.assessmentsdk:id/functionSelect')
print('case1_success!')
def test_full_rador_hit(self):
'''輸入信息,全景雷達報告生成成功'''
el = self.driver.find_element_by_class_name('android.widget.Button')
el.click() #點擊下一步
el=self.driver.find_element_by_id('com.xinyan.assessmentsdk:id/functionSelect') #存在產品類型的輸入框
el.click() #點擊,彈出轉盤選擇產品類型
el=self.driver.find_element_by_name('確定') .click() #點擊產品類型的輸入框
self.driver.find_element_by_id('com.xinyan.assessmentsdk:id/id_name') .send_keys(u'陸X') #身份證姓名輸入
self.driver.find_element_by_id('com.xinyan.assessmentsdk:id/id_no') .send_keys('5226271992xxxx0415') #身份證號輸入
self.driver.find_element_by_id('com.xinyan.assessmentsdk:id/startRisAssessment') .click() #點擊開始智能評估
try:
self.driver.find_element_by_id('com.xinyan.assessmentsdk:id/tvAgree').click()
except:
pass
print('2')
rslt=self.driver.find_element_by_id('com.xinyan.assessmentsdk:id/result') .get_attribute('text') #獲取返回結果
print(rslt) #打印返回結果
assert json.loads(rslt)['radarInfo']['desc']=='查詢成功' #校驗返回結果
print('case2_success!')
def tearDown(self):
# end the session
self.driver.quit()
if __name__ == '__main__':
unittest.main()
