appcrawler

一.環(huán)境搭建:(前提是當(dāng)然得有Java環(huán)境)

1.appcrawler的最新jar包(最新的功能多绞吁,兼容性比較高),我用的是 appcrawler-2.1.0.jar ,

下載地址如下:百度網(wǎng)盤: [https://pan.baidu.com/s/1bpmR3eJ]

2. appium ,用來開啟session服務(wù)并定位元素的,也可以使用 appium GUI(桌面版),但是我使用跑了一半就崩潰了刻像,內(nèi)存不足,所以推薦使用命令行版本的

下載方式:

(1)在命令行下執(zhí)行npm --registry http://registry.cnpmjs.org install -g appium (推薦這種,npm的國內(nèi)鏡像)

(2)檢查appium所需的環(huán)境是否OK(這步很重要):進(jìn)入Cmd命令行并闲,輸入appium-doctor 顯示正常則成功

3.Android SDK,主要是為了使用tools文件夾下的 uiautomatorviewer.bat 來定位元素细睡,獲取元素的xpath,用于準(zhǔn)備工作前期。

二.執(zhí)行步驟:

1.手機(jī)安裝好最新的安裝包帝火,不需要登陸(避免不能遍歷登陸前的頁面內(nèi)容溜徙,且登錄后再進(jìn)行遍歷會(huì)出現(xiàn)activity不一致的報(bào)錯(cuò),即和launchActivity不一致)

2.開啟appium服務(wù)

在命令行中輸入: appium 犀填,提示: 則開啟成功

3.在放 appcrawler-2.1.0.jar 的文件夾下執(zhí)行以下命令:

Java -jar appcrawler-2.1.0.jar -a jingdata.apk -c config.yml --output wyy/

即可自動(dòng)啟動(dòng)APP萌京,并自動(dòng)遍歷點(diǎn)擊元素

因?yàn)楸闅v的深度比較大,在覆蓋比較全面的條件下宏浩,我這邊測試會(huì)有496條case左右知残,基本要跑1個(gè)小時(shí)左右。

最后自動(dòng)生成的報(bào)告如下:


5.png

三. 如何寫配置文件 config.yml (這才是運(yùn)行的核心所在)

參數(shù)說明:

Java -jar appcrawler-2.1.0.jar 用來啟動(dòng)appcrawler

-a 后面跟安裝包的名字 (用于自己手機(jī)沒有安裝包的時(shí)候的使用)

-c 后面跟自定義的配置文件的路徑和名字

-output 后面跟輸出的報(bào)告所在的文件夾比庄,如果沒有寫求妹,則會(huì)自動(dòng)生成一個(gè)以時(shí)間為文件夾名字的報(bào)告文件

參數(shù)說明:

firstList:優(yōu)先遍歷元素

urlWhiteList/blackList:白名單/黑名單

baseUrl:設(shè)置一個(gè)起始url和maxDepth, 用來在遍歷時(shí)候指定初始狀態(tài)和遍歷深度

maxDepth:默認(rèn)的最大深度10, 結(jié)合baseUrl可很好的控制遍歷的范圍

enterWebView:是否遍歷WebView控件

urlBlackList:url黑名單.用于排除某些頁面

urlWhiteList:url白名單, 第一次進(jìn)入了白名單的范圍, 就始終在白名單中. 不然就算不在白名單中也得遍歷. 上層是白名單, 當(dāng)前不是白名單才需要返回

logLevel:日志級(jí)別

saveScreen:是否截圖

reportTitle:報(bào)告名字

screenshotTimeout:屏幕超時(shí)時(shí)間

currentDriver:當(dāng)前設(shè)備(Android/iOS)

resultDir:結(jié)果文件夾名,給定后佳窑,將不動(dòng)態(tài)命名

tagLimitMax:ios的元素tag控制

tagLimit:給tag

maxTime:最大運(yùn)行時(shí)間

showCancel:應(yīng)該是控制是否展示注釋

capability:用于配置appium

androidCapability:Android專屬配置制恍,最后會(huì)和capability合并

iosCapability:iOS專屬配置

xpathAttributes:用來設(shè)定可以用那些種類型去定位控件

defineUrl:用來確定url的元素定位xpath 他的text會(huì)被取出當(dāng)作url因素(沒理解)

appWhiteList:app白名單,如果跳轉(zhuǎn)到其他app神凑,需要設(shè)定規(guī)則净神,是否允許停留在次app中

headFirst:是否是前向遍歷或者后向遍歷

defaultBackAction:默認(rèn)的返回動(dòng)作(沒看到例子何吝,貌似不特指的話,是click)

backButton:給一些返回控件鹃唯,用于返回動(dòng)作使用

selectedList:默認(rèn)遍歷列表爱榕,如果不是指定的類型,而是確定控件坡慌,會(huì)分別點(diǎn)擊控件

lastList:最后遍歷的元素

blackList:排除某些控件

triggerActions:制定規(guī)則(action黔酥、xpath、times)

autoCrawl:自動(dòng)抓取洪橘,看源碼指定true后運(yùn)行crawl(conf.maxDepth)命令 (crawl——清空堆棧 開始重新計(jì)數(shù))應(yīng)該是appcrawler的主要方法

asserts:斷言跪者,用于是否失敗的判斷

testcase:測試用例,看appcrawler日志熄求,每次都是首先運(yùn)行用例才會(huì)往下執(zhí)行

beforeElementAction:貌似沒什么人用渣玲,字面意思在元素動(dòng)作之前

afterElementAction:與beforeElementAction的待遇差不多

afterUrlFinished:也是很冷門的待遇

monkeyEvents:monkey的點(diǎn)擊數(shù)

monkeyRunTimeSeconds:monkey運(yùn)行時(shí)間 given是條件 或輸入 when是觸發(fā)條件和動(dòng)作 then是斷言

4、一次ctrl+c生成報(bào)告弟晚,兩次ctrl+c是強(qiáng)行退出

5柜蜈、終端輸入Scala進(jìn)入Scala解釋器,輸入:q或:quit退出解釋器

6指巡、遍歷的深度應(yīng)該怎么設(shè)置好,總是跳到其它頁面隶垮,就回不到當(dāng)前頁面繼續(xù)遍歷了,看文檔 通過黑白名單

7藻雪、設(shè)置一個(gè)起始url和maxDepth, 用來在遍歷時(shí)候指定初始狀態(tài)和遍歷深度

<pre style="margin: 0px; color: rgb(51, 51, 51); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">四. 遇到的問題有哪些?如何解決</pre>

1.登錄:

因?yàn)锳PP的登錄頁面是用戶名+驗(yàn)證碼狸吞,由于該頁面按鈕眾多且有驗(yàn)證圖標(biāo)勉耀,需要滑動(dòng)解鎖很復(fù)雜,所以選用了賬號(hào)密碼登錄的方式

(1)設(shè)置 賬號(hào)密碼登錄 按鈕為白名單蹋偏,即必須點(diǎn)擊便斥,此時(shí)一定會(huì)編輯進(jìn)入賬戶名密碼登錄頁面,配置如下:

urlWhiteList:

  • //*[contains(@resource-id, "login_36kr_ll") and @clickable='true']

必須遍歷賬號(hào)密碼登錄的按鈕

(2)設(shè)置賬號(hào)密碼登錄中威始,用戶名和密碼元素的觸發(fā)器枢纠,當(dāng)定位到這兩個(gè)元素時(shí),輸入用戶名和密碼黎棠,配置如下:

triggerActions:

主要解決登錄的問題晋渺,當(dāng)遇到登錄輸入框時(shí),輸入內(nèi)容脓斩,比testcase更好用

  • action: "177*******"

xpath: "http://*[@resource-id='com.android36kr.investment:id/login_36kr_phone_edit']"

times: 1

  • action: "123456"

xpath: "http://*[@resource-id='com.android36kr.investment:id/login_36kr_pass_code']"

times: 1

(3)設(shè)置賬號(hào)密碼登錄中木西,輸入用戶名和密碼后,按照遍歷順序随静,接下來有一個(gè)忘記密碼的點(diǎn)擊事件開啟了新頁面八千,為了避免登陸的多余操作吗讶,將 忘記密碼 這個(gè)元素設(shè)置為黑名單,不進(jìn)行遍歷恋捆,配置如下:

urlBlackList:

  • //*[contains(@resource-id, "login_36kr_forgot_pass") and @clickable='true']

忘記密碼照皆,避免登陸時(shí)按照遍歷順序影響登陸

2. 聊天詳情頁

因?yàn)槭蔷€上包,為了避免點(diǎn)擊交換名片鸠信,直接發(fā)送聯(lián)系方式給線上用戶纵寝,所以 將 交換名片的按鈕設(shè)置 為 黑名單

3.聊天詳情頁

聊天詳情頁的項(xiàng)目卡片點(diǎn)擊后重新進(jìn)入到項(xiàng)目頁面,導(dǎo)致重復(fù)遍歷星立,所以將項(xiàng)目卡片的可點(diǎn)擊元素設(shè)置為 黑名單

4.頭像部分

點(diǎn)擊頭像會(huì)調(diào)起相機(jī)爽茴,導(dǎo)致運(yùn)行到此處就 shutdown ,所以設(shè)置所有可點(diǎn)擊的頭像部分都為 黑名單绰垂,運(yùn)行就正常了室奏。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市劲装,隨后出現(xiàn)的幾起案子胧沫,更是在濱河造成了極大的恐慌,老刑警劉巖占业,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绒怨,死亡現(xiàn)場離奇詭異,居然都是意外死亡谦疾,警方通過查閱死者的電腦和手機(jī)南蹂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來念恍,“玉大人六剥,你說我怎么就攤上這事》寤铮” “怎么了疗疟?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瞳氓。 經(jīng)常有香客問我策彤,道長,這世上最難降的妖魔是什么匣摘? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任锅锨,我火速辦了婚禮,結(jié)果婚禮上恋沃,老公的妹妹穿的比我還像新娘必搞。我一直安慰自己,他們只是感情好囊咏,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布恕洲。 她就那樣靜靜地躺著塔橡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪霜第。 梳的紋絲不亂的頭發(fā)上葛家,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音泌类,去河邊找鬼癞谒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛刃榨,可吹牛的內(nèi)容都是我干的弹砚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼枢希,長吁一口氣:“原來是場噩夢啊……” “哼桌吃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起苞轿,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤茅诱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后搬卒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瑟俭,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年契邀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了摆寄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蹂安,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出锐帜,到底是詐尸還是另有隱情田盈,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布缴阎,位于F島的核電站允瞧,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蛮拔。R本人自食惡果不足惜述暂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望建炫。 院中可真熱鬧畦韭,春花似錦、人聲如沸肛跌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至转唉,卻和暖如春皮钠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赠法。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國打工麦轰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人砖织。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓款侵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親镶苞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子喳坠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 前言 AppCrawler是一個(gè)基于自動(dòng)遍歷的app爬蟲工具. 支持android和iOS, 支持真機(jī)和模擬器. ...
    test小星星閱讀 3,839評(píng)論 2 5
  • 介紹 一個(gè)基于自動(dòng)遍歷的app爬蟲工具. 支持android和iOS, 支持真機(jī)和模擬器. 最大的特點(diǎn)是靈活性. ...
    望月成三人閱讀 5,656評(píng)論 2 3
  • 1.創(chuàng)建文件夾 !/bin/sh mkdir -m 777 "%%1" 2.創(chuàng)建文件 !/bin/sh touch...
    BigJeffWang閱讀 10,051評(píng)論 3 53
  • 目錄 安卓主流的自動(dòng)化測試框架及對(duì)比.................................... 2 ...
    323e134d370d閱讀 2,309評(píng)論 0 7
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,097評(píng)論 1 32