# appcrawler
Appcrawler是一个基于自动遍历的App爬虫工具,支持Android和IOS,支持真机和模拟器。最大的特点是灵活性高,可通过配置来设定遍历的规则。
## quick start
```bash
-------------------------------------------------
appcrawler 全平台自动遍历测试工具
Q&A: https://ceshiren.com/c/opensource/appcrawler
author: seveniruby
-------------------------------------------------
Usage: appcrawler [options]
-a, --app <value> Android或者iOS的文件地址, 可以是网络地址, 赋值给appium的app选项
-e, --encoding <value> set encoding, such as UTF-8 GBK
-c, --conf <value> 配置文件地址
-p, --platform <value> 平台类型android或者ios, 默认会根据app后缀名自动判断
-t, --maxTime <value> 最大运行时间. 单位为秒. 超过此值会退出. 默认最长运行3个小时
-u, --appium <value> appium的url地址
-o, --output <value> 遍历结果的保存目录. 里面会存放遍历生成的截图, 思维导图和日志
--capability k1=v1,k2=v2...
appium capability选项, 这个参数会覆盖-c指定的配置模板参数, 用于在模板配置之上的参数微调
-y, --yaml <value> 代表配置的yaml语法,比如blackList: [ {xpath: action_night } ],用于避免使用配置文件的情况
-r, --report <value> 输出html和xml报告
--template <value> 输出代码模板
--master <value> master的diff.yml文件地址
--candidate <value> candidate环境的diff.yml文件
-v, --verbose-debug 是否展示更多debug信息
-vv, --verbose-trace 是否展示更多trace信息
--demo 生成demo配置文件学习使用方法
--help
示例
appcrawler -a xueqiu.apk
appcrawler -a xueqiu.apk --capability noReset=true
appcrawler -c conf/xueqiu.json -p android -o result/
appcrawler -c xueqiu.yaml --capability udid=[你的udid] -a Snowball.app
appcrawler -c xueqiu.yaml -a Snowball.app -u 4730
appcrawler -c xueqiu.yaml -a Snowball.app -u http://127.0.0.1:4730/wd/hub
#生成demo配置文件到当前目录下的demo.yaml
appcrawler --demo
#启动已经安装过的app
appcrawler --capability "appPackage=com.xueqiu.android,appActivity=.view.WelcomeActivityAlias"
#使用yaml参数
appcrawler -a xueqiu.apk -y "blackList: [ {xpath: action_night}, {xpath: '.*[0-9\\.]{2}.*'} ]"
#从已经结束的结果中重新生成报告
appcrawler --report result/
```
## 配置文件格式
### 执行参数与配置文件
- capability设置:与appium完全一致
- testcase:用于启动app后的基础测试用例
- selectedList:遍历范围设定
- triggerActions:特定条件触发执行动作的设置
- selectedList:需要被遍历的元素范围
- firstList:优先被点击
- lastList:最后被点击
- tagLimitMax:同祖先(同类型)的元素最多点击多少次
- backButton:当所有元素都被点击后默认后退控件定位
- blackList:黑名单
- maxDepth: 遍历的最大深度
### 配置的最小单元 测试用例模型
testcase的完整形态
- given:所有的先决条件
- when:先决条件成立后的行为
- then:断言集合
testcase的简写形态
- xpath:对应when里的xpath
- action:对应when的action
执行参数比配置文件优先级别高
- given 前提条件
- when 执行动作
- then 写断言
简写形态
- xpath xpath支持xpath表达式、正则、包含
- action 支持
### xpath定义
- xpath
- //*[@resource-id=‘xxxx’]
- //*[contains(@text, ‘密码’)]
- 正则
- ^确定$
- ^.*输入密码
- 包含
- 密码
- 输入
- 请
### action定义
- "" 只是截图记录
- back 后退
- backApp 回退到当前的app 默认等价于back行为 可定制
- monkey 随机事件
- click
- longTap
- xxx() 执行scala或者java代码
- Thread.sleep(3000)
- driver.swipe(0.9, 0.5, 0.1, 0.5)
- 非以上所有行为是输入 xx ddd
### 完整配置文件
```yaml
---
maxTimeDescription: "最大运行时间"
maxTime: 10800
maxDepthDescription: "默认的最大深度10, 结合baseUrl可很好的控制遍历的范围"
maxDepth: 10
capabilityDescription: "appium的capability通用配置,其中automationName代表自动化的驱动引擎,除了支持appium的\
所有引擎外,额外增加了adb和selenium的支持"
capability:
appActivity: ".ApiDemos"
appium: "http://127.0.0.1:4723/wd/hub"
noReset: "true"
appPackage: "io.appium.android.apis"
fullReset: "false"
testcaseDescription: "测试用例设置,用于遍历开始之前的一些前置操作,比如自动登录"
testcase:
name: "AppCrawler TestCase"
steps:
- given: []
when: null
then: []
xpath: "/*/*"
action: "Thread.sleep(1000)"
actions: []
times: -1
triggerActionsDescription: "在遍历过程中需要随时处理的一些操作,比如弹框、登录等"
triggerActions:
- given: []
when: null
then: []
xpath: "permission_allow_button"
action: ""
actions: []
times: 3
- given: []
when: null
then: []
xpath: "允许"
action: ""
actions: []
times: 3
selectedListDescription: "默认遍历列表,只有出现在这个列表里的控件范围才会被遍历"
selectedList:
- given: []
when: null
then: []
xpath: "//*[contains(name(), 'Button')]"
action: ""
actions: []
times: -1
- given: []
when: null
then: []
xpath: "//*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10]"
action: ""
actions: []
times: -1
- given: []
when: null
then: []
xpath: "//*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10]"
action: ""
actions: []
times: -1
- given: []
when: null
then: []
xpath: "//*[contains(name(), 'Image') and @clickable='true']"
action: ""
actions: []
times: -1
- given: []
when: null
then: []
xpath: "//*[@clickable='true']/*[contains(name(), 'Image')]"
action: ""
actions: []
times: -1
- given: []
when: null
then: []
xpath: "//*[contains(name(), 'Image') and @name!='']"
action: ""
actions: []
times: -1
- given: []
when: null
then: []
xpath: "//*[contains(name(), 'Text') and @name!='' and string-length(@label)<10]"
action: ""
actions: []
times: -1
- given: []
when: null
then: []
xpath: "//a"
action: ""
actions: []
times: -1
- given: []
when: null
then: []
xpath: "//*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10]"
action: ""
actions: []
times: -1
- given: []
when: null
then: []
xpath: "//*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10]"
action: ""
actions: []
times: -1
- given: []
when: null
then: []
xpath: "//*[contains(@class, 'Image') and @clickable='true']"
action: ""
actions: []
times: -1
- given: []
when: null
then: []
xpath: "//*[@clickable='true']/*[contains(@class, 'Image')]"
action: ""
actions: []
times: -1
- given: []
when: null
then: []
xpath: "//*[@clickable='true' and contains(@class, 'Button')]"
action: ""
actions: []
times: -1
blackListDescription: "黑名单列表 matches风格, 默认排除内容包含2个数字的控件"
blackList:
- given: []
when: null
then: []
xpath: ".*[0-9]{2}.*"
action: ""
actions: []
times: -1
firstListDesc
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
爬虫 Deep Web爬虫爬行过程中最重要部分就是表单填写,包含两种类型: (1)基于领域知识的表单填写:此方法一般会维持一个本体库,通过语义分析来选取合适的关键词填写表单。Yiyao Lu等人提出一种获取Form表单信息的多注解方法,将数据表单按语义分配到各个组中,对每组从多方面注解,结合各种注解结果来预测一个最终的注解标签;郑冬冬等人利用一个预定义的领域本体知识库来识别Deep Web页面内容,同时利用一些来自Web站点导航模式来识别自动填写表单时所需进行的路径导航。 (2)基于网页结构分析的表单填写:此方法一般无领域知识或仅有有限的领域知识,将网页表单表示成DOM树,从中提取表单各字段值。Desouky等人提出一种LEHW方法,该方法将HTML网页表示为DOM树形式,将表单区分为单属性表单和多属性表单,分别进行处理;孙彬等人提出一种基于XQuery的搜索系统,它能够模拟表单和特殊页面标记切换,把网页关键字切换信息描述为三元组单元,按照一定规则排除无效表单,将Web文档构造成DOM树,利用XQuery将文字属性映射到表单字段。
资源推荐
资源详情
资源评论
收起资源包目录
一个基于自动遍历的 App 爬虫工具.zip (176个子文件)
TestMacaca.scala.bak 1KB
id=tv_login_by_phone_or_othersTests.class 786B
CountryCodeSelectActivityTests.class 771B
id=register_phone_numberTests.class 768B
id=user_profile_iconTests.class 756B
LoginOptionActivityTests.class 753B
MyProfileActivityTests.class 747B
LoginActivityTests.class 735B
id=tv_loginTests.class 729B
雪球Tests.class 714B
.gitignore 106B
XPathUtil.java 12KB
AllureTest.java 5KB
AutoGenerateTest.java 5KB
TestCaseTest.java 5KB
JavaAppCrawlerTest.java 4KB
AllureDiffTest.java 3KB
Junit5Report.java 3KB
MvnReplace.java 3KB
PageSource.java 3KB
GetAPKPackage.java 2KB
TestBackDoor.java 2KB
GenerateClassByJavassist.java 2KB
GenerateClassTest.java 2KB
JUnit5RuntimeJava.java 2KB
SuiteToClassTest.java 2KB
Log.java 2KB
SettingsTest.java 2KB
CrawlerTest.java 1KB
AllureTemplate.java 1KB
Junit5ReportTest.java 1KB
AppiumTouchAction.java 1KB
Setting.java 1KB
PageSourceTest.java 1KB
JUnit5ExceptionTest.java 1KB
Junit5TemplateTest.java 1KB
SeleniumDDT.java 1KB
MustcheTest.java 1017B
Report.java 1014B
BaseDDT.java 948B
MockDDT.java 936B
BackBtnXpathTest.java 926B
DemoTest.java 868B
LogTest.java 848B
Context.java 813B
AllureTemplateTestcase.java 804B
CountryCodeSelectActivityTest.java 674B
LoadYaml.java 628B
Node.java 573B
DemoPlugin.java 512B
ElementUrlTest.java 487B
Demo.java 444B
DiffTest.java 442B
ReadYaml.java 335B
BaseDDTTest.java 330B
FakeData.java 310B
LoadYamlTest.java 279B
NodeTest.java 274B
MvnReplaceTest.java 223B
ExecutingTests.java 107B
source.json 49KB
README.md 13KB
CHANGELOG.md 5KB
template.mustache 250B
404.png 44KB
TestXPathUtil.scala 153KB
Crawler.scala 42KB
TestCrawler.scala 32KB
TestDataObject.scala 16KB
TestWeixin.scala 14KB
TData.scala 13KB
XPathUtil.scala 12KB
AppCrawler.scala 12KB
CrawlerConf.scala 11KB
AppiumClient.scala 9KB
ReactWebDriver.scala 8KB
SeleniumDriver.scala 7KB
URIElement.scala 7KB
AdbDriver.scala 6KB
DiffSuite.scala 5KB
URIElementStore.scala 4KB
TestIOS.scala 4KB
AppCrawlerTest.scala 4KB
TestXueQiu.scala 4KB
TestWebView.scala 4KB
DynamicEval.scala 4KB
TestDynamicEval.scala 3KB
TestSauceLabs.scala 3KB
TestWebDriverAgent.scala 3KB
TestThread.scala 3KB
ScalaTestTemplate.scala 3KB
TagLimitPlugin.scala 3KB
LogicUtils.scala 3KB
TestJianShu.scala 3KB
MockDriver.scala 3KB
ReportFactory.scala 2KB
TestNW.scala 2KB
ReportPlugin.scala 2KB
TreeNode.scala 2KB
ScalaTestRuntime.scala 2KB
共 176 条
- 1
- 2
资源评论
野生的狒狒
- 粉丝: 3094
- 资源: 2301
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功