開源項(xiàng)目地址:https://github.com/erveniruby/AppCrawler
一,簡(jiǎn)介
(1)AppCrawler是一個(gè)基于自動(dòng)遍歷的app爬蟲工具. 支持android和iOS, 支持真機(jī)和模擬器. 最大的特點(diǎn)是靈活性. 可通過(guò)配置來(lái)設(shè)定遍歷的規(guī)則.(指哪打哪)
(2)環(huán)境要求
- java8
- appium1.8x
二,安裝并運(yùn)行
(1)安裝AppCrawler
1.直接下載:最新版本下載地址: https://pan.baidu.com/s/1dE0JDCH
2.從源代碼編譯
(2)運(yùn)行:
- 初次運(yùn)行(需要先啟動(dòng)appium)
啟動(dòng)appium:
appium --session-override
啟動(dòng)appcrawler:
java -jar appcrawler-2.4.0-jar-with-dependencies.jar
- 啟動(dòng)并遍歷已經(jīng)安裝過(guò)的app
java -jar appcrawler-2.4.0-jar-with-dependencies.jar --capability “appPackage=com.xueqiu.android,appActivity=.view.WelcomeActivityAlias”
(3)生成demo.yml及配置參數(shù)解析
1,生成配置文件demo.yml:
java -jar appcrawler-2.4.0-jar-with-dependencies.jar --demo
2,capability: 與appium的capability一致
3,testcase:
- testcase的先決條件:
given 所有的先決條件
when 先決條件成立后的行為
then 斷言集合贮配,通過(guò)xpath斷言集合在不在 - testcase的簡(jiǎn)寫形態(tài):
xpath對(duì)應(yīng)when里的xpath
action對(duì)應(yīng)when里的action - 樣例: 點(diǎn)擊"我的"頁(yè)面后,從下往上滑動(dòng),再點(diǎn)擊"設(shè)置"按鈕
testcase:
name: "testcase appcrawler"
steps:
- xpath: 我的
action: click
- xpath: //*
action: driver.swipe(0.5, 0.9, 0.5, 0.1)
- xpath: 設(shè)置
action: click
4,selectedList:需要被遍歷的元素范圍
5,firstList:優(yōu)先被點(diǎn)擊
6,lastList:最后被點(diǎn)擊
規(guī)定誰(shuí)先誰(shuí)后
7,tagLimitMax:同類型控件最多點(diǎn)擊多少次
8,backButton:當(dāng)所有都被點(diǎn)擊后艳丛,最后再點(diǎn)擊。默認(rèn)后退控件定位(返回按鈕)
9,blackList :黑名單(注銷)匠襟,加入進(jìn)即表示不點(diǎn)擊這個(gè)按鈕
10,maxDepth: 6 纤怒,改為1的話喳整,只要離開這個(gè)頁(yè)面就自動(dòng)返回來(lái)
11,triggerActions: 觸發(fā)器
- 需要特定次數(shù)的觸發(fā)動(dòng)作
- 通常用于處理彈窗
xpath:制動(dòng)具體按鈕
acthon:動(dòng)作
times:規(guī)則的使用次數(shù) - 樣例:點(diǎn)擊按鈕,觸發(fā)triggerActions關(guān)閉登錄頁(yè)面
testcase:
name: "testcase appcrawler"
steps:
- xpath: "http://*[@resouce-id='com.xueqiu.andriod:id/post_status']"
action: click
triggerActions:
name: "testcase appcrawler"
steps:
- xpath: "http://*[@resouce-id='com.xueqiu.andriod:id/iv_close']"
action: click
四.xpath與action
1, 定位模式XPATH
- xpath 都可以
//[@resource-id=‘xxx’]
//[contains(@text, ‘密碼’)] - 正則 表達(dá)式也可以(^表示開頭 .表示任一多個(gè)字符)
^確定$
^.輸入密碼 - 包含(只需給出按鈕包含元素的一個(gè)字或者多個(gè)字即可)流码,例如:輸入如下text
密碼
輸入
請(qǐng)
2, action動(dòng)作支持
- click
- “”只是截圖記錄
- back后退
- backApp 回退到當(dāng)前的app默認(rèn)等價(jià)與back行為 可定制
- monkey 隨機(jī)事件
- 執(zhí)行代碼:
Thread.sleep(3000)
driver.swipe(0.9,0.5,1.5,1.2)
三,使用 Appcrawler
先生成配置文件 使用 “–demo”提陶,生成 <demo.yaml>
打開配置文件行施,修改符合需求的測(cè)試用例
執(zhí)行java -jar … -c demo1.yml(需先進(jìn)入到j(luò)ar包所在的目錄下允坚,才能運(yùn)行)
人工檢測(cè)瀏覽截圖
編程檢查Dom結(jié)構(gòu)