日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python android自动化_python在Android下的自动化测试用法

發(fā)布時間:2024/7/23 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python android自动化_python在Android下的自动化测试用法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

# This Python file uses the following encoding: utf-8

from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice

from com.android.monkeyrunner.easy import EasyMonkeyDevice #提供了根據(jù)ID進(jìn)行訪問

from com.android.monkeyrunner.easy import By #根據(jù)ID返回PyObject的方法

device=MonkeyRunner.waitForConnection()

device.startActivity(component="com.example.android.apis/com.example.android.apis.ApiDemos")

easy_device=EasyMonkeyDevice(device)#必須在activity啟動之后

#登錄界面,點擊賬號輸入框

easy_device.touch(By.id('id/text1'),MonkeyDevice.DOWN_AND_UP)

轉(zhuǎn)載部分知識:

http://www.cnblogs.com/yanghj010/p/4670292.html

一:直接在shell命令下輸入以下命令;

命令說明

device=MonkeyRunner.waitForConnection() #連接手機(jī)設(shè)備

device.installPackage("../samples/android-10/ApiDemos/bin/Apidemos.apk") #安裝apk包到手機(jī)設(shè)備。

啟動其中的任意activity了,只要傳入package和activity名稱即可。命令如下:

device.startActivity(component="com.example.android.apis/com.example.android.apis.ApiDemos")

此時模擬器會自動打開ApiDemos這個應(yīng)用程序的主頁。

device.reboot() #手機(jī)設(shè)備重啟

device.touch(300,300,'DOWN_AND_UP')

MonkeyRunner.alert("hello")#在emulator上會彈出消息提示

device.press('KEYCODE_HOME',MonkeyDevice.DOWN_AND_UP)

device.type('hello')#向編輯區(qū)域輸入文本'hello'

二:將以下命令寫到python文件里,例如test.py,然后我們再從命令行直接通過monkeyrunner運(yùn)行它即可。比如,我們還是用上面的例子,語法如下:monkeyrunner test.py 接下來monkeyrunner會自動調(diào)用test.py,并執(zhí)行其中的語句,相當(dāng)方便。

實例:test.py

from?com.android.monkeyrunner?import?MonkeyRunner,MonkeyDevice

device=MonkeyRunner.waitForConnection()

device.startActivity(component="your.www.com/your.www.com.TestActivity")

在CMD中執(zhí)行

monkeyrunner test.py

可能出現(xiàn)錯誤“Can't open specified script file”,如下圖所示:

原因在于python腳本文件路徑不正確。你可以有以下解決辦法:

1、將test.py文件存放到monkeyrunner文件同一目錄中。可以執(zhí)行:monkeyrunner test.py?調(diào)用

2、指定python文件位置。如果test.py文件在D盤根目錄下,可以這樣執(zhí)行:monkeyrunner d:\test.py

三 、MonkeyRunner語法

3.1?monkeyrunner

monkeyrunner工具提供了一個API,運(yùn)用該API編寫的程序可以不用通過android代碼來直接控制android設(shè)備和模擬器,我們可以寫一個python程序?qū)ndroid應(yīng)用程序或測試包進(jìn)行安裝、運(yùn)行、發(fā)送模擬擊鍵,對用戶界面進(jìn)行截圖并將截圖存儲在workstation上等操作。monkeyrunner工具的主要設(shè)計目的是用于測試application/framework層上的應(yīng)用程序和設(shè)備、或用于運(yùn)行單元測試套件,也可以用于其它目的。

3.2?monkeyrunner為android測試提供了以下獨特的功能:

1、多設(shè)備控制:monkeyrunner API可以跨多個設(shè)備或模擬器實施測試套件。可以在同一時間接上所有設(shè)備或一次啟動全部模擬器,依據(jù)程序依次連接到每一個,然后運(yùn)行一個或多個測試。也可以用程序啟動一個配置好的模擬器,運(yùn)行一個或多個測試,然后關(guān)閉模擬器。

2、功能測試:monkeyrunner可以為一個應(yīng)用自動貫徹一次功能測試。您提供按鍵或觸摸事件的輸入數(shù)值,然后觀察輸出結(jié)果的截屏。

4、回歸測試:monkeyrunner可以運(yùn)行某個應(yīng)用,并將其結(jié)果截屏與既定已知正確的結(jié)果截屏相比較,以此測試應(yīng)用的穩(wěn)定性。

4、可擴(kuò)展的自動化:由于monkeyrunner是一個API工具包,我們可以開發(fā)基于python模塊和程式的一整套系統(tǒng),以此來控制android設(shè)備。除了使用monkeyrunner API,我們還可以使用標(biāo)準(zhǔn)的python os和ubprocess模塊來調(diào)用android debug bridge這樣的android工具。如ADB這樣的android工具,也可以將自己寫的類添加到monkeyrunner API中。

3.3 ?運(yùn)行monkeyrunner

可以直接使用一個代碼文件運(yùn)行monkeyrunner,抑或在交互式對話中輸入monkeyrunner語句。不論使用哪種方式,你都需要調(diào)用SDK目錄的tools子目錄下的monkeyrunner命令。如果提供一個文件名作為運(yùn)行參數(shù),則monkeyrunner將視文件內(nèi)容為python程序,并加以運(yùn)行;否則,它將提供一個交互對話環(huán)境。

3.4 ?monkeyrunner命令語法

monkeyrunner -plugin

3.5?monkeyrunner API

主要包括三個模塊

1、MonkeyRunner:這個類提供了用于連接monkeyrunner和設(shè)備或模擬器的方法,它還提供了用于創(chuàng)建用戶界面顯示提供了方法。

2、MonkeyDevice:代表一個設(shè)備或模擬器。這個類為安裝和卸載包、開啟Activity、發(fā)送按鍵和觸摸事件、運(yùn)行測試包等提供了方法。

3、MonkeyImage:這個類提供了捕捉屏幕的方法。這個類為截圖、將位圖轉(zhuǎn)換成各種格式、對比兩個MonkeyImage對象、將image保存到文件等提供了方法。

3.6?導(dǎo)入需要的模塊

方式一:

import sys

from com.android.monkeyrunner import MonkeyRunner as mr

from com.android.monkeyrunner import MonkeyDevice as md

from com.android.monkeyrunner import MonkeyImage as mi

如果給導(dǎo)入的模塊起了別名,就應(yīng)該使用別名,而不能使用原名,否則會出現(xiàn)錯誤。

比如連接設(shè)備或模擬器,起了以上別名后,命令應(yīng)該如下:

device=mr.waitForConnection()

方式二:

from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage

方式三:

import com.android.monkeyrunner

但是在使用時,就顯得特別麻煩

device=com.android.monkeyrunner.MonkeyRunner.waitForConnection()

方式四:

我們也可以給它一個別名

import com.android.monkeyrunner as cam

但是在使用時,就顯得特別麻煩

device=cam.MonkeyRunner.waitForConnection()

#等待連接到設(shè)備,與模擬器連接,返回monkeydevice對象,代表連接的設(shè)備。沒有報錯的話說明連接成功。

參數(shù)1:超時時間,單位秒,浮點數(shù)。默認(rèn)是無限期地等待。

參數(shù)2:串deviceid,指定的設(shè)備名稱。默認(rèn)為當(dāng)前設(shè)備(手機(jī)優(yōu)先,比如手機(jī)通過USB線連接到PC、其次為模擬器)。

默認(rèn)連接:device=MonkeyRunner.waitForConnection()

參數(shù)連接:device = mr.waitForConnection(1.0,'emulator-5554')

3.7?向設(shè)備或模擬器安裝要測試的APK

device.installPackage('myproject/bin/MyApplication.apk') #參數(shù)是相對或絕對APK路徑

路徑級別用“/”,不能用“\”,比如d:\www\a.apk,而應(yīng)該寫成d:/www/a.apk

安裝成功返回true,此時查看模擬器我們可以在IDLE界面上看到安裝的APK的圖標(biāo)了。

3.8?從設(shè)備中刪除指定的軟件包,包括其相關(guān)的數(shù)據(jù)和調(diào)整緩存

device.removePackage('myproject/bin/MyApplication.apk')

刪除成功返回true。

3.9?啟動任意的Activity

device.startActivity(component="your.www.com/your.www.com.TestActivity")

或者

device.startActivity(component="your.www.com/.TestActivity")

此時可以向模擬器發(fā)送如按鍵、滾動、截圖、存儲等操作了。

執(zhí)行一個adb shell命令,并返回結(jié)果,如果有的話

device.shell("...")

3.10?暫停目前正在運(yùn)行的程序指定的秒數(shù)

MonkeyRunner.sleep(秒數(shù),浮點數(shù))

3.11 捕捉屏幕寫入文件

獲取設(shè)備的屏蔽緩沖區(qū),產(chǎn)生了整個顯示器的屏蔽捕獲。(截圖)

result=device.takeSnapshot()

返回一個MonkeyImage對象(點陣圖包裝),我們可以用以下命令將圖保存到文件

result.writeToFile('takeSnapshot\\result1.png','png')

MonkeyImage.writeToFile(參數(shù)1:輸出文件名,也可以包括路徑,參數(shù)2:目標(biāo)格式)

寫成功返回true,否則返回false

3.12 type

鍵盤上的類型指定的字符串,這相當(dāng)于要求每個字符串中的字符按(鍵碼,DOWN_AND_UP).

字符串發(fā)送到鍵盤

device.type('字符串')

3.13?喚醒設(shè)備屏幕(在設(shè)備屏幕上喚醒)

device.wake()

3.14?重新引導(dǎo)到指定的引導(dǎo)程序指定的設(shè)備

device.reboot()

3.15 touch、press

在指定位置發(fā)送觸摸事件(x,y的單位為像素)

device.touch(x,y,TouchPressType-觸摸事件類型)

發(fā)送到指定鍵的一個關(guān)鍵事件

device.press(參數(shù)1:鍵碼,參數(shù)2:觸摸事件類型)

參數(shù)1:見android.view.KeyEvent

參數(shù)2,如有TouchPressType()返回的類型-觸摸事件類型,有三種。

1、DOWN 發(fā)送一個DOWN事件。指定DOWN事件類型發(fā)送到設(shè)備,對應(yīng)的按一個鍵或觸摸屏幕上。

2、UP 發(fā)送一個UP事件。指定UP事件類型發(fā)送到設(shè)備,對應(yīng)釋放一個鍵或從屏幕上抬起。

3、DOWN_AND_UP 發(fā)送一個DOWN事件,然后一個UP事件。對應(yīng)于輸入鍵或點擊屏幕。

以上三種事件做為press()或touch()參數(shù)。原英文如下:

use this with the type argument of press() or touch() to send a down event.

為了模擬輸入鍵,發(fā)送DOWN_AND_UP。

參數(shù)1的部分具體內(nèi)容邏輯:

按下HOME鍵 device.press('KEYCODE_HOME',MonkeyDevice.DOWN_AND_UP)

按下BACK鍵 device.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP)

按下下導(dǎo)航鍵 device.press('KEYCODE_DPAD_DOWN',MonkeyDevice.DOWN_AND_UP)

按下上導(dǎo)航鍵 device.press('KEYCODE_DPAD_UP',MonkeyDevice.DOWN_AND_UP)

按下OK鍵 device.press('KEYCODE_DPAD_CENTER',MonkeyDevice.DOWN_AND_UP)

device.press('KEYCODE_ENTER',MonkeyDevice.DOWN_AND_UP)#輸入回車

device.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP)#點擊返回

home鍵 KEYCODE_HOME

back鍵 KEYCODE_BACK

send鍵 KEYCODE_CALL

end鍵 KEYCODE_ENDCALL

上導(dǎo)航鍵 KEYCODE_DPAD_UP

下導(dǎo)航鍵 KEYCODE_DPAD_DOWN

左導(dǎo)航 KEYCODE_DPAD_LEFT

右導(dǎo)航鍵 KEYCODE_DPAD_RIGHT

ok鍵 KEYCODE_DPAD_CENTER

上音量鍵 KEYCODE_VOLUME_UP

下音量鍵 KEYCODE_VOLUME_DOWN

power鍵 KEYCODE_POWER

camera鍵 KEYCODE_CAMERA

menu鍵 KEYCODE_MENU

總結(jié)

以上是生活随笔為你收集整理的python android自动化_python在Android下的自动化测试用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。