APP移動端測試高級

手機(jī)操作API
針對手機(jī)的一些常用設(shè)置功能進(jìn)行操作.
10.1. 前置代碼
from appium import webdriver

server 啟動參數(shù)

desired_caps = {}

設(shè)備信息

desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.56.101:5555'

app的信息

desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'

聲明我們的driver對象

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
10.2. 獲取手機(jī)時間

  • 方法:device_time

  • 代碼實現(xiàn):

    獲取當(dāng)前手機(jī)的時間

    print(driver.device_time)

  • 執(zhí)行結(jié)果:
    Wed Dec 27 08:52:45 EST 2017
    10.3. 獲取手機(jī)的寬高
    獲取手機(jī)的寬高,可以根據(jù)寬高做一些坐標(biāo)的操作

  • 方法:get_window_size()

  • 代碼實現(xiàn):
    print(driver.get_window_size())

  • 執(zhí)行結(jié)果:
    {'height': 800, 'width': 480}
    10.4. 發(fā)送鍵到設(shè)備
    模擬系統(tǒng)鍵值的操作帘撰,比如操作home鍵有决,音量鍵,返回鍵等朝抖。

  • 參數(shù):
    keycode:發(fā)送給設(shè)備的關(guān)鍵代碼
    metastate:關(guān)于被發(fā)送的關(guān)鍵代碼的元信息,一般為默認(rèn)值

  • 業(yè)務(wù)場景:
    1.打開設(shè)置
    2.按多次音量增加鍵

  • 代碼實現(xiàn):
    for i in range(3):
    driver.keyevent(24)

Appium---Android的keycode鍵值

adb命令使用
adb shell input keyevent XX(EventCode) #輸入對應(yīng)的鍵值
adb shell input text "www.baidu.com"
#向瀏覽器發(fā)送文本

EventCode KeyEvent EventName
0 KEYCODE_UNKNOWN 未知鍵
1 KEYCODE_SOFT_LEFT 左鍵
2 KEYCODE_SOFT_RIGHT 右鍵
3 KEYCODE_HOME Home鍵
4 KEYCODE_BACK 返回鍵
5 KEYCODE_CALL 撥號鍵
6 KEYCODE_ENDCALL 掛機(jī)鍵
7 KEYCODE_0 按鍵“0”
8 KEYCODE_1 按鍵“1”
9 KEYCODE_2 按鍵“2”
10 KEYCODE_3 按鍵“3”
11 KEYCODE_4 按鍵“4”
12 KEYCODE_5 按鍵“5”
13 KEYCODE_6 按鍵“6”
14 KEYCODE_7 按鍵“7”
15 KEYCODE_8 按鍵“8”
16 KEYCODE_9 按鍵“9”
17 KEYCODE_STAR 按鍵“*”
18 KEYCODE_POUND 按鍵“#”
19 KEYCODE_DPAD_UP 導(dǎo)航鍵 向上
20 KEYCODE_DPAD_DOWN 導(dǎo)航鍵 向下
21 KEYCODE_DPAD_LEFT 導(dǎo)航鍵 向左
22 KEYCODE_DPAD_RIGHT 導(dǎo)航鍵 向右
23 KEYCODE_DPAD_CENTER 導(dǎo)航鍵 確定
24 KEYCODE_VOLUME_UP 音量鍵加
25 KEYCODE_VOLUME_DOWN 音量鍵減
26 KEYCODE_POWER 電源鍵
27 KEYCODE_CAMERA 相機(jī)鍵
28 KEYCODE_CLEAR 清除鍵
29 KEYCODE_A 按鍵“A”
30 KEYCODE_B 按鍵“B”
31 KEYCODE_C 按鍵“C”
32 KEYCODE_D 按鍵“D”
33 KEYCODE_E 按鍵“E”
34 KEYCODE_F 按鍵“F”
35 KEYCODE_G 按鍵“G”
36 KEYCODE_H 按鍵“H”
37 KEYCODE_I 按鍵“I”
38 KEYCODE_J 按鍵“J”
39 KEYCODE_K 按鍵“K”
40 KEYCODE_L 按鍵“L”
41 KEYCODE_M 按鍵“M”
42 KEYCODE_N 按鍵“N”
43 KEYCODE_O 按鍵“O”
44 KEYCODE_P 按鍵“P”
45 KEYCODE_Q 按鍵“Q”
46 KEYCODE_R 按鍵“R”
47 KEYCODE_S 按鍵“S”
48 KEYCODE_T 按鍵“T”
49 KEYCODE_U 按鍵“U”
50 KEYCODE_V 按鍵“V”
51 KEYCODE_W 按鍵“W”
52 KEYCODE_X 按鍵“X”
53 KEYCODE_Y 按鍵“Y”
54 KEYCODE_Z 按鍵“Z”
55 KEYCODE_COMMA 按鍵“,”
56 KEYCODE_PERIOD 按鍵‘.’
57 KEYCODE_ALT_LEFT 組合鍵 Alt+Left
58 KEYCODE_ALT_RIGHT 組合鍵 Alt+Right
59 KEYCODE_SHIFT_LEFT 組合鍵 Shift+Left
60 KEYCODE_SHIFT_RIGHT 組合鍵 Shift+Left
61 KEYCODE_TAB Tab鍵
62 KEYCODE_SPACE 空格鍵
63 KEYCODE_SYM 選擇輸入法
64 KEYCODE_EXPLORER 瀏覽器
65 KEYCODE_ENVELOPE 郵件
66 KEYCODE_ENTER 回車鍵
67 KEYCODE_DEL 退格鍵
68 KEYCODE_GRAVE 按鍵‘`’
69 KEYCODE_MINUS 按鍵‘-’
70 KEYCODE_EQUALS 按鍵‘=’
71 KEYCODE_LEFT_BRACKET 按鍵‘[’
72 KEYCODE_RIGHT_BRACKET 按鍵‘]’
73 KEYCODE_BACKSLASH 按鍵‘\’
74 KEYCODE_SEMICOLON 按鍵‘,’
75 KEYCODE_APOSTROPHE 按鍵‘'’(單引號)
76 KEYCODE_SLASH 按鍵‘/’
77 KEYCODE_AT 按鍵‘@’
78 KEYCODE_NUM 按鍵Number modifier
79 KEYCODE_HEADSETHOOK 按鍵Headset Hook
80 KEYCODE_FOCUS 拍照對焦鍵
81 KEYCODE_PLUS 按鍵‘+’
82 KEYCODE_MENU 菜單鍵
83 KEYCODE_NOTIFICATION 通知鍵
84 KEYCODE_SEARCH 搜索鍵
85 TAG_LAST_KEYCODE

10.5. 操作手機(jī)通知欄
打開手機(jī)的通知欄缀程,可以獲取通知欄的相關(guān)信息和元素操作

  • 方法:open_notifications()
  • 業(yè)務(wù)場景:
    1.啟動設(shè)置
    2.打開通知欄
  • 代碼實現(xiàn):
    driver.open_notifications()
    10.6. 獲取手機(jī)當(dāng)前網(wǎng)絡(luò)
    獲取手機(jī)當(dāng)前連接的網(wǎng)絡(luò)
  • 方法:network_connection
  • 業(yè)務(wù)場景:獲取手機(jī)當(dāng)前網(wǎng)絡(luò)模式
  • 代碼實現(xiàn):
    print(driver.network_connection)
  • 執(zhí)行結(jié)果:
    6
    | Value (Alias) | Data | Wifi | Airplane Mode |
    | --- | --- | --- | --- |
    | 0 (None) | 0 | 0 | 0 |
    | 1 (Airplane Mode) | 0 | 0 | 1 |
    | 2 (Wifi only) | 0 | 1 | 0 |
    | 4 (Data only) | 1 | 0 | 0 |
    | 6 (All network on) | 1 | 1 | 0 |

10.7. 設(shè)置手機(jī)網(wǎng)絡(luò)
更改手機(jī)的網(wǎng)絡(luò)模式,模擬特殊網(wǎng)絡(luò)情況下的測試用例

  • 方法:set_network_connection(connectionType)

  • 參數(shù):
    connectionType:需要被設(shè)置成為的網(wǎng)絡(luò)類型

  • 業(yè)務(wù)場景:
    1.啟動設(shè)置
    2.設(shè)置手機(jī)網(wǎng)絡(luò)為飛行模式

  • 代碼實現(xiàn):
    driver.set_network_connection(1)
    10.8. 手機(jī)截圖
    截取手機(jī)當(dāng)前屏幕,保存指定格式圖片到設(shè)定位置

  • 方法:get_screenshot_as_file(filename)

  • 參數(shù):
    filename:指定路徑下屹堰,指定格式的圖片.

  • 業(yè)務(wù)場景:
    1.打開設(shè)置頁面
    2.截圖當(dāng)前頁面保存到當(dāng)前目錄,命名為screen.png

  • 代碼實現(xiàn):
    import os
    driver.get_screenshot_as_file(os.getcwd() + os.sep + './screen.png')

  • 執(zhí)行結(jié)果:
    當(dāng)前目錄下會生成screen.png文件
    十一街氢、腳本錄制
    11.1. 認(rèn)識界面
    11.2. 點擊開始錄制按鍵開始錄制腳本

  1. 點擊頂部導(dǎo)航欄左側(cè)第一個“選擇元素”按鍵選定搜索欄扯键,然后點擊右邊點“點擊”按鍵進(jìn)行操作(錄制過程就是先選擇錄制窗口左邊的APP元素,然后錄制窗口右邊的操作方式)珊肃。

  2. 錄制完成后點擊“停止錄制”按鍵荣刑,錄制窗口右上角會同步顯示操作代碼,選擇代碼類型伦乔,將模板代碼轉(zhuǎn)換成正式代碼厉亏,復(fù)制代碼到Pycharm。

  3. 代碼復(fù)制到pycharm后烈和,最好是在每個操作或者頁面切換處加上等待時間叶堆,否則會因為網(wǎng)速、APP設(shè)計問題或者其他原因斥杜,無法及時到達(dá)下一個頁面虱颗,導(dǎo)致APPIUM無法獲取頁面元素而定位元素失敗沥匈,在pycharm運行時報錯。代碼編輯好后點擊pycharm的運行按鍵忘渔,APPium就會在手機(jī)上面自動運行腳本了高帖。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市畦粮,隨后出現(xiàn)的幾起案子散址,更是在濱河造成了極大的恐慌,老刑警劉巖宣赔,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件预麸,死亡現(xiàn)場離奇詭異,居然都是意外死亡儒将,警方通過查閱死者的電腦和手機(jī)吏祸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钩蚊,“玉大人贡翘,你說我怎么就攤上這事∨槁撸” “怎么了鸣驱?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蝠咆。 經(jīng)常有香客問我踊东,道長,這世上最難降的妖魔是什么刚操? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任递胧,我火速辦了婚禮,結(jié)果婚禮上赡茸,老公的妹妹穿的比我還像新娘缎脾。我一直安慰自己,他們只是感情好占卧,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布遗菠。 她就那樣靜靜地躺著,像睡著了一般华蜒。 火紅的嫁衣襯著肌膚如雪辙纬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天叭喜,我揣著相機(jī)與錄音贺拣,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛譬涡,可吹牛的內(nèi)容都是我干的闪幽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼涡匀,長吁一口氣:“原來是場噩夢啊……” “哼盯腌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起陨瘩,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤腕够,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后舌劳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帚湘,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年甚淡,在試婚紗的時候發(fā)現(xiàn)自己被綠了大诸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡材诽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出恒傻,到底是詐尸還是另有隱情脸侥,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布盈厘,位于F島的核電站睁枕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏沸手。R本人自食惡果不足惜外遇,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望契吉。 院中可真熱鬧跳仿,春花似錦、人聲如沸捐晶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惑灵。三九已至山上,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間英支,已是汗流浹背佩憾。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人妄帘。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓楞黄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親寄摆。 傳聞我的和親對象是個殘疾皇子谅辣,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

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

  • 一、Appium介紹 Appium是一個移動端的自動化框架婶恼,可用于測試原生應(yīng)用桑阶、移動網(wǎng)頁應(yīng)用和混合型應(yīng)用,且是跨平...
    Anwfly閱讀 2,685評論 2 7
  • 一勾邦、Appium介紹 Appium是一個移動端的自動化框架蚣录,可用于測試原生應(yīng)用、移動網(wǎng)頁應(yīng)用和混合型應(yīng)用眷篇,且是跨平...
    九櫻MOL閱讀 955評論 0 0
  • appium介紹 appium是一個移動端的自動化框架萎河,可用測試原生應(yīng)用,移動網(wǎng)頁應(yīng)用蕉饼,和混合型應(yīng)用虐杯,且是跨平臺的...
    楷0105閱讀 260評論 0 0
  • 移動端測試 知識概覽 一、 移動端測試是什么 移動端測試是指對移動應(yīng)用進(jìn)行的測試昧港,即實體的特性滿足需求的程度擎椰。 二...
    G_eebd閱讀 1,375評論 0 0
  • 知識概覽 一、 移動端測試是什么 移動端測試是指對移動應(yīng)用進(jìn)行的測試创肥,即實體的特性滿足需求的程度达舒。 二、 移動端測...
    __65a0閱讀 1,885評論 1 10