第一次寫博,最近解決了作自動化測試短信驗證碼自動獲取填入的方法減小了腳本的人工干預,並不是攔截短信,因此不存在安全警報提醒,拿出來分享給你們,有感興趣的你們能夠加Q1856100python
目前在職測試開發,,寫一些腳本,我的認爲這職業不科學不該該有的職業,測試就是測試,開發就是開發,運維仍是老鳥,這行業總能折騰些莫名其妙的東西出來,剛作這行時學的第一門語言是bash shell, 去新去單位上班直接寫了個一鍵搭建測試環境的測試腳本,原本不想幹測試了,好好作微信小程序開發,但是苦於學歷不高,時間不夠,還有開發工做很累,工資行情也差不了多少,
android
不扯了,說這些是由於最近因爲一些蹊蹺的事情,以前作過人力老闆的李某人把我簡歷給了一家外包,讓我以二等公民的身份去作自動化,我想着...項目多有挑戰性,加上很長時間沒有真正作過測試了,手癢癢就去了,以前作過一些接口自動化,自學過robotframework框架,來了以後才知道這是在作web端和andriod端的UI自動化測試,選好框架碼好碼就能夠RUN了嘛!,用例卻是也簡單,就是一些頁面展現檢查和圖形比對....話很少吹web
但是一看需求,一接觸就慌了,這TM不適合作自動化呀,第一, 數據查詢類web端,這種就不必作自動化仍是功能點點來的快;第二, 主使用環境是IE .最重要的是因爲安全緣由和現網使用:不用容許留後門,設置萬能碼,上上下下協調了多少次就是不給解決,這樣每次登錄就有2大門檻 1,短信驗證碼 2,圖形驗證碼shell
依據這兩個問題,本身查找解決的辦法,網上的方法大都是打醬油的多,查了不少也問了不少人,無果,沒辦法只能本身解決,短信驗證碼自動獲取稍微的簡單一些就從這兒入手,個人思路是:既然python處理數據存儲也比較方便簡單就用它結合selenium來作此產品的框架吧,首先,若是能實時的把短信存儲到一份文件裏就方便python去讀取了,再把讀取到的最新短信字段,經過截取數字,發送到輸入框不就就搞定了麼?小程序
好了! 須要一個有權限的 APK 在手機實時存儲短信到手機內存 /sdcard/smslog.txt 裏(外部SD卡也能夠,能經過adb命令訪問到):微信小程序
/***** 安全
......bash
try {
long timestamp = System.currentTimeMillis();
String time = formatter.format(new Date());
String fileName = "smsLog.txt";
if (Environment.getExternalStorageState().equals(Environment.MOUNTED)) {
String path = Environment.getExternalStorageDirectory()+"/";
***
if (!dir.exists()) {
dir.mkdirs();
}微信
*框架
fos.write((time + " " + s).getBytes());
fos.close();
}
return fileName;
} catch (Exception e) {
Log.e("sms", "an error occured while writing file...", e);
}
return null;
}
*******/
註冊一下接收器:
<receiver android:name=".SmsInterceptReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
添加下權限:
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
android腳本好了,簽名+打包,裝入手機就行了,安裝實驗一下:安裝時我都是一些權限都打開給到這個APK
自動生成了一個smslog.txt 再打開看一下內容,能正常記錄,下面用寫一個python腳本截取最後一段的最後四個數字就能夠了
經過cmd
adb shell cat /sdcard/smsLog.txt
成功顯示文件裏的內容
2017-05-16-16-39-27 您好,你的短信驗證碼爲7959
2017-05-16-16-40-09 您好,你的短信驗證碼爲6474
2017-05-16-16-45-22 您好,你的短信驗證碼爲4664
2017-05-16-17-19-47 您好,你的短信驗證碼爲3320
2017-05-16-17-21-20 您好,你的短信驗證碼爲3146
2017-05-16-17-27-40 您好,你的短信驗證碼爲2709
2017-05-16-17-27-43 您好,你的短信驗證碼爲9421
2017-05-16-17-27-46 您好,你的短信驗證碼爲5035
2017-05-16-17-27-48 您好,你的短信驗證碼爲2212
2017-05-16-17-27-49 您好,你的短信驗證碼爲5745
2017-05-16-17-28-28 您好,你的短信驗證碼爲5409
2017-05-16-17-28-32 您好,你的短信驗證碼爲1176
2017-05-16-17-28-33 您好,你的短信驗證碼爲8708
2017-05-16-17-28-35 您好,你的短信驗證碼爲3997
2017-05-16-17-28-37 您好,你的短信驗證碼爲3567
2017-05-16-18-45-57 您好,你的短信驗證碼爲3060
在python腳本中再構個函數就解決了
def getSma():
adb = "adb shell cat /sdcard/smsLog.txt"
smsLog = os.popen(adb).readlines()
smscode = smsLog[-1][-6:-2]
return smscode
OK! 腳本登錄RUN,步驟到點擊發送驗證碼以後成功獲取並自動填入,短信驗證碼成功解決,提高了腳本的執行效率和自動化覆蓋率! 下週再開始解決圖形驗證碼自動識別問題, 以前用UFT試過識別率過低,這款商業軟件越作越不值錢了. 咱再也不去求人,本身解決,活着就是爲了折騰.