Appium學習02-實戰(zhàn)基礎

Appium學習筆記目錄

本文包含內(nèi)容

  1. appium session簡介
  2. appium基礎代碼詳解
  3. 實戰(zhàn)示例

會話session

  1. Appium測試程序和Appium server之間的http請求都必須在一個session中進行
  2. 每次運行代碼相當于開啟了一個會話session
  3. 每個會話對應一個id,每一次的請求都會帶上 session id

基本配置

1. desired_capabilities

01詳解Appium server capabilities
02詳解Appium server capabilities

這些鍵值對告訴appium server測試程序希望進行的是什么樣的測試

desired_caps = {}  # 定義字典:告訴appium我們的一些配置
desired_caps['platformName'] = 'Android'  # 固定值
desired_caps['platformVersion'] = '8.1'  # android版本
desired_caps['deviceName'] = 'test'  # 連接多個設備時會用到 ?
desired_caps['app'] = r'/Users/liuhuaiyuan/Downloads/apk/toutiao.apk' # apk在電腦上的路徑
desired_caps['appPackage'] = 'io.manong.developerdaily' # apk的package  通過aapt命令查找
desired_caps['appActivity'] = 'io.toutiao.android.ui.activity.LaunchActivity' # 指定apk的啟動界面(通常啟動界面是唯一的) 通過aapt命令查找
desired_caps['unicodeKeyboard']  = True  # 安裝中文輸入法,以便于控制专普,及部分中文的輸入
desired_caps['resetKeyboard']  = True  # 針對上一條語句绳矩,如果手機還有其他的輸入法辑莫,還原輸入法,便于其他操作
desired_caps['noReset'] = True   # 重要參數(shù)淋样,=True 恢復默認值作岖,=False(缺省值) 每次都是從剛安裝app的狀態(tài)進入(格式化狀態(tài))唆垃,可能會顯示歡迎頁等
desired_caps['newCommandTimeout'] = 6000  # 設置等待時間,當超過這個時間時痘儡,將斷開與appium的連接辕万。單位是秒
  • 通用參數(shù)


  • Android專用參數(shù)



  • Ios專用參數(shù)



2. 獲取appPackage和appActivity

  • 方式一:通過aapt命令獲取
    補充:Mac配置aapt環(huán)境變量方法

    • 通過aapt命令獲取,aapt在sdk目錄下的build-tools目錄下
    # aapt dump badging apk位置
    # Mac:
    aapt dump badging /Users/用戶名/Downloads/duoduoCalculators.apk
    # win:
    aapt dump badging F:\android_apk\jykl5.1.5test.apk 
    
    
    • 擴展aapt dump badging F:\android_apk\jykl5.1.5test.apk >d:\info.txt && d:\info.txt

    命令解釋:輸出到d:\info.txt 并打開此文件

    1. d:\info.txt 表示將前面的執(zhí)行結果輸出到d盤下的文件info.txt中
    2. &&表示如果前面的命令執(zhí)行成功沉删,則繼續(xù)執(zhí)行后面的命令(打開d盤下的文件info.txt)
    • 查找package:name對應的值渐尿,即為appPackage的值


      aapt01.png
    • 查找launchable-activity:name對應的值,即為appActivity的值


      aapt02.png
  • 方式二:通過adb命令獲取

    adb shell pm list packages 如果想知道應用對應的apk文件在手機上的安裝位置則可以在上面的命令后加-f參數(shù)
    adb shell pm list packages -f 獲取appActivityj adb shell dumpsys activity findstr "mFocusedActivity"
    

練習代碼

# coding=utf8

from appium import webdriver
import time,traceback

desired_caps = {}  # 定義字典:告訴appium我們的一些配置
desired_caps['platformName'] = 'Android'  # 固定值
desired_caps['platformVersion'] = '8.1'  # android版本
desired_caps['deviceName'] = 'test'  # 連接多個設備時會用到 矾瑰?
desired_caps['app'] = r'/Users/liuhuaiyuan/Downloads/toutiao.apk' # apk在電腦上的路徑
desired_caps['appPackage'] = 'io.manong.developerdaily' # apk的package  通過aapt命令查找
desired_caps['appActivity'] = 'io.toutiao.android.ui.activity.LaunchActivity' # 指定apk的啟動界面(通常啟動界面是唯一的) 通過aapt命令查找
desired_caps['unicodeKeyboard']  = True  # 安裝中文輸入法砖茸,以便于控制,及部分中文的輸入
desired_caps['resetKeyboard']  = True  # 針對上一條語句殴穴,如果手機還有其他的輸入法凉夯,還原輸入法,便于其他操作
desired_caps['noReset'] = True   # 重要參數(shù)推正,=True 恢復默認值恍涂,=False(缺省值) 每次都是從剛安裝app的狀態(tài)進入(格式化狀態(tài)),可能會顯示歡迎頁等
desired_caps['newCommandTimeout'] = 6000  # 設置等待時間植榕,當超過這個時間時再沧,將斷開與appium的連接。單位是秒
#啟動Remote RPC
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps ) # 連接appium尊残,并將參數(shù)(字典)傳入炒瘸,執(zhí)行完此句后,與appium創(chuàng)建一個session
# 0.0.0.0:4723
try:
    driver.implicitly_wait(10)  # 隱式等待寝衫,每0.5秒查詢一次顷扩,直到指定時間,結束慰毅。單位是秒

    # 根據(jù)id找到元素隘截,并點擊,id和 html 元素的id不同
    driver.find_element_by_id("io.manong.developerdaily:id/tab_bar_plus").click()
    time.sleep(1)
    # driver.find_element_by_id("io.manong.developerdaily:id/btn_email").click()
    # time.sleep(1)
    # 輸入用戶名汹胃、密碼
    # ele = driver.find_element_by_id("io.manong.developerdaily:id/edt_email")
    ele = driver.find_element_by_id("io.manong.developerdaily:id/edt_phone")
    ele.send_keys('XXXXXXXXX')
    ele = driver.find_element_by_id("io.manong.developerdaily:id/edt_password")
    ele.send_keys('XXXXXXX')

    time.sleep(2)
    # 點擊登錄
    driver.find_element_by_id('io.manong.developerdaily:id/btn_login').click()
    pass

except:
    print (traceback.format_exc())

input('**** Press to quit..')
driver.quit()
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末婶芭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子着饥,更是在濱河造成了極大的恐慌犀农,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異燃辖,居然都是意外死亡流济,警方通過查閱死者的電腦和手機欲账,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門赚哗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喇喉,“玉大人孤钦,你說我怎么就攤上這事塘娶∥谱” “怎么了枝冀?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長耘子。 經(jīng)常有香客問我果漾,道長,這世上最難降的妖魔是什么谷誓? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任绒障,我火速辦了婚禮,結果婚禮上捍歪,老公的妹妹穿的比我還像新娘户辱。我一直安慰自己,他們只是感情好糙臼,可當我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布庐镐。 她就那樣靜靜地躺著,像睡著了一般变逃。 火紅的嫁衣襯著肌膚如雪必逆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天揽乱,我揣著相機與錄音名眉,去河邊找鬼。 笑死凰棉,一個胖子當著我的面吹牛损拢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播撒犀,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼福压,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了或舞?” 一聲冷哼從身側響起隧膏,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嚷那,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杆煞,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡魏宽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年腐泻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片队询。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡派桩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蚌斩,到底是詐尸還是另有隱情铆惑,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布送膳,位于F島的核電站员魏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏叠聋。R本人自食惡果不足惜撕阎,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碌补。 院中可真熱鬧虏束,春花似錦、人聲如沸厦章。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽袜啃。三九已至汗侵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間囊骤,已是汗流浹背晃择。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留也物,地道東北人宫屠。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像滑蚯,于是被迫代替她去往敵國和親浪蹂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內(nèi)容