appium 基礎二:常用api接口


一、獲取手機分辨率

size=driver.get_window_size()#獲取手機屏幕大小,分辨率
print(size)#{'width': 720, 'height': 1280}

得到的是一個字典,從而獲取到手機的寬和高

height=size.get('height')
width=size.get('width')

二、滑屏和拖拽

通過坐標實現划屏操作。那么首先我們要設置起始坐標的x,y和終點坐標的x,y。然后通過swipe方法實現划屏

s_x=width*0.5#0.5相當於寬度的一半,此處采用了百分比的方式
s_y=height*0.8

e_x=width*0.5
e_y=height*0.2
driver.swipe(s_x,s_y,e_x,e_y,500)#滑動

拖拽

# 拖拽
# elementObj1源元素,elementObj2目標元素
# 通過long_press實現
driver.drag_and_drop(elementObj1, elementObj2)

觸控

# 多點觸控 模擬手指點擊
# tap模擬按住坐標多少秒,[(x,y)] 多個坐標則寫多個元祖。參數2為按住多少秒。ms(毫秒)為單位
driver.tap([(x, y)], 5000)

三、操作app

# 返回是否安裝了對應包名的App True 或者 False
driver.is_app_installed('com.syqy.wecash')
 
# 關閉初始化信息中的App
driver.close_app()
 
# 啟動初始化信息中的App
driver.launch_app()
 
# 安裝app 參數為軟件的絕對路徑
driver.install_app(r'C:\Users\bjhouyafan\Desktop\tester\appUi\wecash.apk')
 
# 卸載app 參數接收appPackageName
driver.remove_app('com.syqy.wecash')

driver.hide_keyboard()#收起鍵盤
driver.background_app(5)#應用置於后台2s
driver.shake()#搖晃(Shake) 模擬設備搖晃 

start_activity:

1、啟動app

我們在運行程序時,默認有配置app信息,在程序運行時,默認啟動已配置好的app。那么此時如果我們想要開啟其他的app,就可以用這個方法

#配置的手機信息中,啟動的是qq,這里close_app后,關閉app,然后再start_activity啟動別的app=>設置
driver.close_app()
driver.start_activity('com.android.settings','.Settings')

2、通過頁面入口,直接打開頁面,略過前面的步驟

比如qq,默認是啟動頁面--登錄/注冊---登錄頁或者注冊頁。我們可以用這個方法,使得不用經過登錄/注冊頁,直接啟動注冊頁。

步驟:

1、先進入到登錄/注冊頁面,點擊注冊進入注冊頁面后

2、獲取當前頁面的activity

driver.current_activity  這個就是注冊頁面的入口

3、用start_activity方法,直接啟動該頁

driver.start_activity('com.tencent.mobileqq','.activity.RegisterPhoneNumActivity')#包名,指定頁面的入口

四、清緩存

driver.reset()#清緩存

相當於手機配置信息中的

desc["noReset"] = "False"#表示需要初始化手機信息

desc["noReset"] = "True"#不初始化手機app信息(類似不清楚緩存)

 

五、NATIVE_APP 與 WEBVIEW 上下文操作

手機app有原生app和混合app兩種。混合App就是HTML5 App,混合App通常由兩部分組成,HTML5雲網站+App應用客戶端

如果手機app中嵌套了h5頁面,我們就不能夠直接操作h5,需要先進行切換。見到標簽中顯示webview,就說明時h5頁

# 返回當前session中的app類型
driver.current_context
 

# 獲取app所有的類型
# 有WEBVIEW的則以list的形式展示兩個
res=driver.contexts
 
# app類型切換 參數接收app類型
# appium對selenium的switch_to的擴展
# 增加了MobileSwitchTo,繼承了selenium的switch_to
driver.switch_to.context(res[1])

默認進入app,指針在原生app NATIVE_APP上。如果此時想要進入webview中操作元素,就要先進性切換

#比如我們模擬器中的瀏覽器,進入后,輸入某個網址打開網頁。此時當前頁面就既有原生,也有h5.網頁的地址欄時原生的。網頁的正文肯定時h5的

print(driver.contexts)#返回當前手機app類型,應該會有2個,一個原生的,一個webview的:  ['NATIVE_APP', 'WEBVIEW_com.android.browser']

driver.switch_to.context(driver.contexts[1])#從原生切換到webview

 

六、鍵盤keycode

# 隱藏鍵盤
driver.hide_keyboard()
 
# 發送按鍵碼,僅按一下,與press_keycode相同
# 可接收str或int的code碼
driver.keyevent(3)
 
# 發送按鍵碼,僅按一下,可接收str或int的code碼
driver.press_keycode(24)
 
# 發送一個長按的按鍵碼,接收參數必須是int的code碼
driver.long_press_keycode(25)

鍵盤對應的keycode可百度查詢。比如enter回車鍵對應的碼就是66.如果想要操作回車,可直接寫driver.press_keycode(66)就代表按下了回車

CODE_ENTER 回車鍵 66
KEYCODE_ESCAPE ESC鍵 111
KEYCODE_DPAD_CENTER 導航鍵 確定鍵 23
KEYCODE_DPAD_UP 導航鍵 向上 19
KEYCODE_DPAD_DOWN 導航鍵 向下 20
KEYCODE_DPAD_LEFT 導航鍵 向左 21
KEYCODE_DPAD_RIGHT 導航鍵 向右 22
KEYCODE_MOVE_HOME 光標移動到開始鍵 122
KEYCODE_MOVE_END 光標移動到末尾鍵 123
KEYCODE_PAGE_UP 向上翻頁鍵 92
KEYCODE_PAGE_DOWN 向下翻頁鍵 93
KEYCODE_DEL 退格鍵 67
KEYCODE_FORWARD_DEL 刪除鍵 112
KEYCODE_INSERT 插入鍵 124
KEYCODE_TAB Tab鍵 61
KEYCODE_NUM_LOCK 小鍵盤鎖 143
KEYCODE_CAPS_LOCK 大寫鎖定鍵 115
KEYCODE_BREAK Break/Pause鍵 121
KEYCODE_SCROLL_LOCK 滾動鎖定鍵 116
KEYCODE_ZOOM_IN 放大鍵 168
KEYCODE_ZOOM_OUT 縮小鍵 169

 

KEYCODE_0 按鍵'0' 7
KEYCODE_1 按鍵'1' 8
KEYCODE_2 按鍵'2' 9
KEYCODE_3 按鍵'3' 10
KEYCODE_4 按鍵'4' 11
KEYCODE_5 按鍵'5' 12
KEYCODE_6 按鍵'6' 13
KEYCODE_7 按鍵'7' 14
KEYCODE_8 按鍵'8' 15
KEYCODE_9 按鍵'9' 16
KEYCODE_A 按鍵'A' 29
KEYCODE_B 按鍵'B' 30
KEYCODE_C 按鍵'C' 31
KEYCODE_D 按鍵'D' 32
KEYCODE_E 按鍵'E' 33
KEYCODE_F 按鍵'F' 34
KEYCODE_G 按鍵'G' 35
KEYCODE_H 按鍵'H' 36
KEYCODE_I 按鍵'I' 37
KEYCODE_J 按鍵'J' 38
KEYCODE_K 按鍵'K' 39
KEYCODE_L 按鍵'L' 40
KEYCODE_M 按鍵'M' 41
KEYCODE_N 按鍵'N' 42
KEYCODE_O 按鍵'O' 43
KEYCODE_P 按鍵'P' 44
KEYCODE_Q 按鍵'Q' 45
KEYCODE_R 按鍵'R' 46
KEYCODE_S 按鍵'S' 47
KEYCODE_T 按鍵'T' 48
KEYCODE_U 按鍵'U' 49
KEYCODE_V 按鍵'V' 50
KEYCODE_W 按鍵'W' 51
KEYCODE_X 按鍵'X' 52
KEYCODE_Y 按鍵'Y' 53
KEYCODE_Z 按鍵'Z' 54

 

七、錯誤及解決辦法

1、目標及計算機拒絕

服務沒有啟動,需要啟動服務:在cmd窗口輸入appium 或者直接打開appium-desktop

2、send_keys方法錯誤

這個是send_keys方法不可用,解決辦法:直接用另一個辦法就行set_vallue()

3、appium與chromedriver版本不匹配

appium版本過高,降低版本即可

步驟:

1、先卸載當前版本:npm uninstall appium -g

2、安裝制定低版本

npm -g install appium@1.7.0  這個命令需要翻牆,如果不能行的話,可以用國內鏡像,或者cnpm安裝

cnpm install -g appium@1.7.0 --no-cache


 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM