Android Robotium跨應用處理方法

2021-06-28 23:24:51 字數 1186 閱讀 4082

相信用過一段時間robotium的同學一般都遇到過如下情況:介面跳轉到被測程式外以後,robotium就毫無對策了,這也是instrumentation框架最致命的乙個缺點;然而領導是不會管你這些很「充分」的理由的…..

ok,既然我們有這樣的需求,還是想辦法解決吧。調研了幾天最終還是實現了乙個曲線救國的方法:

實現原理:編寫乙個程式a,用於接收case中傳送的指定廣播,當程式a接收到指定的廣播後就會響應你注入的動作事件。

準備工作:

熟悉service 、boradcastreceiver、input keyevent, 有不清楚的同學可以先

下以上知識模組。

具體實現:

1、首先為了方便我們使用,我們可以設定為程式a為開機啟動乙個service,該service中註冊乙個boardcastreceiver用於接收乙個特定action的廣播,設定乙個intentfilter:intentfilter mintentfilter=new intentfilter(); mintentfilter.addaction(「

android

.zered.action」);然後在boardcastreceiver的onreceive方法中使用runtime.getruntime.exec(cmdb)執行我們case中傳送過來的指令(input keyevent xx 當然也可以是其他的一些

shell

手機;2、步驟1的完成已經為我們完成了乙個命令執行端(可以理解為cs的

server

端),現在我們需要做的就是傳送這個廣播,傳送廣播的方法為context.sendbroadcast,所以我們在case中就可以使用solo.getcurrentactivity.sendbroadcast傳送廣播;

剩下的就是我們要把這個命令列cmdb封裝到廣播中,intent intent=new intent();intent.setaction(「android.zered.action」);intent.putextra(tag,cmdb);solo.getcurrentactivity.sendbroadcast(intent);

ok,這樣以來乙個帶有命令列的廣播就算是傳送出去了。

3、以上步驟完成以後,步驟1啟動的程式a中的service接收到步驟2傳送的廣播以後,就會執行我們傳送的命令列指令cmdb了:runtime.getruntime.exec(intent.getstringextra(tag))

python處理跨平台應用

在工作中處理應用程式維護,遇到很多問題終於還是搞定了。記下,後面補充具體問題。coding gbk import psutil import re import sys import string import time import subprocess def startprocess cwd ...

awk語法與文字應用處理

awk命令的一般形式 awk begin pattern1 pattern2 patternn end input filename 其中,begin 和 end 是可選的。awk的執行過程如下 1,如果存在begin,awk首先執行它指定的actions。2,awk從輸入中讀取一行,稱為一條輸入記...

JDBC高階應用 處理結果集

處理結果集 查詢結果都保持在resultset結果集中,遍歷結果集便可以取得其中的資料。實際應用中,一般會查詢多個 查詢多個 可以使用同乙個statement或者preparedstatement實現,返回同乙個resultset物件 例如 string sql select from table1...