手機(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. 點擊開始錄制按鍵開始錄制腳本
點擊頂部導(dǎo)航欄左側(cè)第一個“選擇元素”按鍵選定搜索欄扯键,然后點擊右邊點“點擊”按鍵進(jìn)行操作(錄制過程就是先選擇錄制窗口左邊的APP元素,然后錄制窗口右邊的操作方式)珊肃。
錄制完成后點擊“停止錄制”按鍵荣刑,錄制窗口右上角會同步顯示操作代碼,選擇代碼類型伦乔,將模板代碼轉(zhuǎn)換成正式代碼厉亏,復(fù)制代碼到Pycharm。
代碼復(fù)制到pycharm后烈和,最好是在每個操作或者頁面切換處加上等待時間叶堆,否則會因為網(wǎng)速、APP設(shè)計問題或者其他原因斥杜,無法及時到達(dá)下一個頁面虱颗,導(dǎo)致APPIUM無法獲取頁面元素而定位元素失敗沥匈,在pycharm運行時報錯。代碼編輯好后點擊pycharm的運行按鍵忘渔,APPium就會在手機(jī)上面自動運行腳本了高帖。