乐于分享
好东西不私藏

从 0 到 1 打造移动端 App 自动化 Skill,架构、流程与实战全解析(附md文件)

从 0 到 1 打造移动端 App 自动化 Skill,架构、流程与实战全解析(附md文件)

本手册面向从零开始学习移动端 App 自动化的软件测试工程师。不要求你先精通 Appium,但建议你具备软件测试基础、会使用终端,并能在 Cursor 中与 AI 协作。

学习路径先理解为什么 → 再认清 Skill 架构 → 跟着跑通八步交付 → 最后能独立维护和扩展。

预计用时 60–90 分钟。

学习路径四步

▲ 图注:从0开始学习的四步路径

教程总览

▲ 图注:教程总览封面——八步交付、Appium 技术栈与核心产物

一、为什么需要这样一个 Skill

很多团队的 App 自动化困境,不是「不会写 Appium 脚本」,而是写了不敢长期维护

• UI 小改,定位器成片失效,没人提前预警

• 用例条数不少,但不知道覆盖了哪些业务流程

• Android / iOS 各写一套,风格混乱、交接成本高

• 混合 App 里 WebView 切不对上下文,失败日志看不懂

• 本地能跑、真机就挂,云网格配置没人文档化

直接让 AI「帮我写 Appium 测试」,往往只能得到能跑一次的脚本,得不到可复查的测试工程

mobile-app-autotest 要解决的,是把移动端自动化变成摸清现状→ 选定运行面 → 列清单 → 生成资产 → 自检 → 中文交付的标准流程,让测试工程师有清晰的事实来源、质量门禁和排障回路。

普通 AI 生成

mobile-app-autotest

给几条能跑的 test case

先出 manifest 清单,再生成 Screen / Flow

XPath 满天飞,改版就挂

定位金字塔,优先 accessibility id

Android / iOS 混写一套 caps

分平台 Options + 跨端注解 Screen

失败靠人工猜

fault-diagnosis 决策树 自动截图

不知道环境缺什么

check_mobile_env.sh 一键体检

二、这个 Skill 是什么?

mobile-app-autotest是安装在 Cursor 里的一个 Skill(工作说明书 辅助脚本 模板 参考文档),路径为 .cursor/skills/mobile-app-autotest/

不是一个独立运行的测试框架,而是指导 Cursor Agent 如何为你的 App 项目交付 Appium 自动化资产,并配套 Shell / Python 脚本做环境体检与测试清单生成。

Skill 三层架构

▲ 图注:Skill 三层架构总览

层级

组成

职责

协作层

SKILL.md + Cursor

定义何时触发、八步怎么推进、完成标准是什么

脚本层

Shell + Python 脚本

环境体检、生成测试清单草稿(无第三方依赖)

产物层

JSON + 测试代码 中文摘要

机器可读清单 + 可执行 case + 人可读交付报告

默认技术栈 Appium 3.x + UiAutomator2Android/ XCUITestiOS)。默认语言仓库已有测试栈则跟随,否则 Java + TestNG默认测试目录mobile-tests/

⚠️ 注意Skill 不包含 Appium Server 安装包。本地执行前仍需 npm i -g appium并安装uiautomator2 / xcuitest驱动。

三、适用场景与输入输出

3.1 适用场景

场景

是否适合

说明

项目尚无系统化 App 自动化

✅ 非常适合

从零搭 Appium 回归基础

已有零散 case,想梳理覆盖

✅ 适合

 manifest + quality-rubric 量化缺口

Android / iOS 双端交付

✅ 适合

分平台 caps + 跨端 Screen 注解

混合 App(原生 + H5

✅ 适合

WebView 上下文切换有专项 reference

云真机碎片化回归

✅ 适合

runtime-targets 配置 Hub 与 lt:// 包地址

需要给产品/领导中文简报

✅ 适合

glossary-zh 交付摘要模板

团队已深度绑定 Detox / Maestro

⚠️ 需审慎

Skill 基于 Appium,非替代方案

纯游戏引擎自定义 UI

⚠️ 需专项

需另行设计定位策略

3.2 输入

• APK / IPA 路径,或云网格上传后的 lt://包地址

• 包名appPackage / bundleId

• 目标平台(Android / iOS / 双端)

• 可选:已有 Appium / WebdriverIO 项目约定(会优先沿用)

• 可选:要覆盖的 P0 业务流程描述(登录、加购、支付等)

3.3 输出(保存在项目根目录)

文件/目录

阶段

用途

app-test-manifest.json

步骤 4

Screen / Flow / 风险清单

mobile-tests/config/

步骤 6

SessionFactorycapabilities

mobile-tests/screens/

步骤 6

页面对象(Screen Object

mobile-tests/flows/

步骤 6

跨页面业务流程用例

mobile-tests/utils/

步骤 6

手势、等待、截图工具

mobile-tests/reports/

步骤 8

失败截图、中文交付摘要

四、核心能力

八步交付闭环

▲ 图注:八步交付闭环与产物对应关系

能力 1,清单先行

 scaffold_manifest.py 产出 app-test-manifest.json,列 Screen / Flow / 风险,作为后续生成的事实来源。

能力 2,定位金字塔

L1 accessibility id 优先,L5 XPath 仅兜底;禁止 Thread.sleep 与写死坐标。

能力 3,多栈落地

支持 Java / Python / JS / TS;本地模拟器、USB 真机、云真机网格均可配置。

能力 4,质量评分 排障

quality-rubric 五维自评;fault-diagnosis 按症状决策树修复。

4.1 定位金字塔

定位金字塔

▲ 图注:定位金字塔 L1-L5

1. L1 accessibility id / content-desc / label — 跨端首选

2. L2 Android resource-id / iOS name — 平台稳定属性

3. L3 iOS predicate / class chain — 结构查询

4. L4 Android UiAutomator — 列表滚动等场景

5. L5 XPath — 仅兜底,须注释原因

4.2 质量评分五维度

质量评分五维

维度

权重

看什么

可运行性

25

起服务即可跑通 P0;无硬编码本机路径

定位健壮性

25

P0 无裸 XPath;关键控件有 accessibility / id

可维护性

20

Screen/Flow 分层;capabilities 集中配置

稳定性

15

 sleep;失败自动截图;超时合理

覆盖透明度

15

 manifest;报告标风险

满分 100,低于 70 需补全后再交付。

五、如何使用:操作步骤(从 0 跟做)

5.0 前置准备

1. 安装 Node.jsPython 3.8+;本地测 Android 需 JDK + Android SDK;测 iOS 需 macOS + Xcode

2. 确认 Skill 在 .cursor/skills/mobile-app-autotest/

3. 准备好 APK / IPA 或云网格账号

5.1 步骤 1–2,环境体检

环境体检命令

bash .cursor/skills/mobile-app-autotest/scripts/check_mobile_env.sh

检查点,确认 NodeAppiumuiautomator2 驱动、adb(或 Xcode)为 [OK];若4723未监听,后续需先appium --port 4723

5.2 步骤 3–4,生成测试清单

python3 .cursor/skills/mobile-app-autotest/scripts/scaffold_manifest.py \  --app-id com.shop.demo \  --platforms android,ios \  --pretty \  --out app-test-manifest.json

检查点,打开 manifest,人工校对 P0 flows 是否与真实业务一致;大规模生成 case 前必须与业务方确认。

{  "appId": "com.shop.demo",  "platforms": ["android", "ios"],  "flows": [{    "id": "guest_checkout",    "name": "访客加购至购物车",    "priority": "P0",    "steps": ["打开目录", "选首件商品", "加入购物车", "校验角标"]  }],  "risks": [{    "item": "优惠券 H5 页",    "reason": "WebView 上下文切换",    "mitigation": "见 hybrid-webview.md"  }]}

5.3 步骤 5–6,启动 Appium 并生成测试工程

npm i -g appiumappium driver install uiautomator2appium driver install xcuitest   # 仅 macOS + iOSappium --port 4723

 Cursor 对话中说:

按 mobile-app-autotest 为包名 com.shop.demo 的 Android App 生成 mobile-tests 工程,基于 app-test-manifest.json,先覆盖加购 P0 流程,用 Java + TestNG。

Screen Object 代码

public class CheckoutScreen {    @AndroidFindBy(accessibility = "cart_checkout_btn")    @iOSXCUITFindBy(accessibility = "cart_checkout_btn")    WebElement checkoutBtn;    public CheckoutScreen(AppiumDriver driver) {        PageFactory.initElements(            new AppiumFieldDecorator(driver, Duration.ofSeconds(12)), this);    }    public PaymentScreen proceedToPay() {        checkoutBtn.click();        return new PaymentScreen(driver);    }}

5.4 步骤 7–8,自检与中文交付

references/quality-rubric.md逐项勾选质量门禁;输出中文摘要(模板见 glossary-zh.md),包含:覆盖范围、定位风险、环境缺口、补测建议。

修复循环:失败走 fault-diagnosis 决策树 → 修定位/caps/上下文 → 重跑冒烟 → 刷新摘要。

六、输出与保存的约定

mobile-tests 目录

你的App项目/├── app-test-manifest.json└── mobile-tests/    ├── config/              # SessionFactory、capabilities    ├── screens/             # CheckoutScreen 等页面对象    ├── flows/               # 跨页面业务流程用例    ├── utils/               # 手势、等待、截图    ├── fixtures/            # 测试账号与数据    └── reports/             # 失败截图、中文交付摘要

6.1 JSON 与中文摘要分工

类型

读者

说明

app-test-manifest.json

工具链 / Agent

字段名稳定,便于自动对比覆盖

reports/ 中文摘要

产品、测试负责人

结论、缺口、待确认项

screens / flows 代码

测试开发

可独立运行,应纳入 Git 版本管理

⚠️ 安全约定,禁止把生产账号密码写入 case 或 fixtures。未知测试账号写在摘要「待确认」区。

七、适合谁用

推荐使用

• 测试开发 / SDET,从零搭 Appium 回归

• 负责 Android / iOS 双端交付的功能测试

• 需要混合 App(原生 + H5)自动化的同学

•  Cursor 里做 AI 测试工作流的团队

• 需要云真机碎片化回归、要写中文简报的 Tech Lead

需审慎

• 团队已深度绑定 Detox / Maestro 且不愿引入 Appium

•  APK/IPA、无模拟器、也不打算用云真机

• 纯游戏引擎自定义 UI(需专项方案)

• 期望 Skill 代替 Appium 本体安装与环境运维

八、Skill 目录结构

Skill 目录对照

.cursor/skills/mobile-app-autotest/├── SKILL.md                          # 八步工作流与触发词├── 使用说明.md├── scripts/│   ├── check_mobile_env.sh           # 环境体检│   └── scaffold_manifest.py          # 清单草稿生成├── assets/templates/│   ├── capability.android.json│   └── capability.ios.json└── references/    ├── delivery-guide.md             # 工程脚手架、并行、CI    ├── runtime-targets.md            # 本地 vs 云    ├── platform-android.md    ├── platform-ios.md    ├── hybrid-webview.md    ├── fault-diagnosis.md    ├── app-test-manifest-contract.md    ├── cross-framework-notes.md    ├── glossary-zh.md    ├── quality-rubric.md    ├── ci-pipeline-snippets.md    └── stacks/        ├── java-testng.md        ├── python-pytest.md        ├── js-wdio.md        └── ts-wdio.md

8.1 可扩展点

扩展需求

改哪里

换语言栈

references/stacks/对应文件 + SKILL.md 语言选型表

 POM 风格

delivery-guide 中 Screen 模式 + stacks 示例

增加质量评分规则

quality-rubric.md

接入 GitHub Actions / GitLab CI

ci-pipeline-snippets.md

支持 RN / Flutter 定位

cross-framework-notes.md

九、整体架构与数据流

9.1 运行面决策

用户线索

运行面

参考文档

云厂商 / 真机农场 / LT

云网格 Hub + lt://

runtime-targets.md

模拟器 / USB 真机 本机

本地 Appium :4723

SKILL.md

多品牌多版本碎片化

云回归 + 本地冒烟

runtime-targets.md

未说明

默认本地模拟器冒烟

9.2 平台与驱动映射

线索词

平台

automationName

APKPixel、华为、小米

Android

UiAutomator2

IPAiPhoneiPad

iOS

XCUITest

React Native / Flutter

同上

同上;优先 accessibility

十、SKILL.md 设计要点

用途:定义 Agent 角色、八步交付工作流、定位策略、目录约定与完成定义。

模块

设计意图

YAML frontmatter

name + description 供 Cursor 发现与触发

默认约定表

驱动、语言、目录一次说清,避免 Agent 即兴发挥

八步交付闭环

从现状调研到中文摘要的完整门禁

定位金字塔 L1–L5

生成代码时的硬性约束

质量门禁 checklist

交付前逐项勾选,不可跳过

参考文档索引

Agent 按需加载 references,避免 SKILL.md 过长

十一、scripts 详细设计

11.1 check_mobile_env.sh

检查项

通过标准

Node.js

node -v可用

Appium CLI

appium -v可用

uiautomator2 驱动

driver list --installed 含 uiautomator2

xcuitest 驱动

macOS 上已安装(iOS 需要)

adb

有在线设备或给出 WARN

Xcode

macOS 上 xcodebuild 可用

端口 4723

已监听或提示启动 appium

云凭证 LT_*

可选;未设置则 WARN

11.2 scaffold_manifest.py

参数

默认值

说明

--app-id

com.example.app

包名 / bundleId

--platforms

android,ios

逗号分隔平台列表

--out

stdout

输出路径

--pretty

JSON 缩进格式化

输出 JSON 字段契约见 references/app-test-manifest-contract.mdappIdplatformsscreens[]flows[]risks[]

十二、references 索引与契约

文件

何时加载

delivery-guide.md

生成工程脚手架、并行、设备交互时

runtime-targets.md

配置本地 / 云 Hub、上传 APK/IPA 

platform-android.md

Android 权限、ADBUiAutomator 技巧

platform-ios.md

WDA、生物识别、iOS 专用定位

hybrid-webview.md

混合 App WebView 上下文切换

fault-diagnosis.md

用例失败、元素找不到、会话创建失败

app-test-manifest-contract.md

编写或校验 manifest JSON

cross-framework-notes.md

RN / Flutter 项目定位策略

glossary-zh.md

撰写中文交付摘要

quality-rubric.md

交付前质量自评

ci-pipeline-snippets.md

接入 GitLab / Jenkins / pre-push 钩子时

stacks/*.md

按语言栈生成用例代码时

十三、给测试工程师的几点建议

1. 先清单,后 case。不要跳过 manifest 阶段直接让 AI 堆用例,P0 流程错了后面全偏。

2.  accessibility id 当协作项。推动开发为关键控件设置 testID / content-desc

3. Android / iOS 分开 caps。禁止混用定位器或 Options 类。

4. 混合 App 测完 H5 必回 NATIVE_APP。否则后续原生步骤静默失败。

5. 失败先走 fault-diagnosis。按症状改一项变量,不要同时改 caps 和定位器。

6. /本地 Hub 集中配置。写进 SessionFactory,不要散落在用例里。

7. 摘要给人看,JSON 给工具看。评审会上用中文摘要,脚本对比用 manifest

十四、常见问题

现象

原因

处理

会话创建失败

Appium 未启动或驱动未装

 check_mobile_env.shappium driver install

元素找不到

定位器错或在 WebView 未切 context

Appium Inspector 重抓;读 hybrid-webview.md

iOS WDA 超时

Xcode / 签名问题

加大 wdaLaunchTimeout;读 platform-ios.md

用例间歇失败

sleep 或动画干扰

改显式等待;Android 关动画

云真机 lt:// 无效

包体未上传或过期

重新上传;读 runtime-targets.md

并行多 Android 会话冲突

systemPort 重复

每会话分配独立 systemPort

学完本手册后,建议你用一个小型 Demo App 完整跑通环境体检 → 清单 → 生成 mobile-tests → 质量自评,并把中文摘要发给同事做一次评审。

附录:Cursor 触发语速查

按 mobile-app-autotest 为当前 App 做移动端自动化交付生成 app-test-manifest 和 mobile-tests 工程用 pytest 写 Android 加购流程 Appium 用例混合 App WebView 里点 H5 按钮怎么测移动端测试环境帮我检查一下配置 XCUITest 真机 capabilities

可扫码回复“0623”领取skill压缩包

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-23 21:29:39 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/787573.html
  2. 运行时间 : 0.115972s [ 吞吐率:8.62req/s ] 内存消耗:4,990.73kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=a1f5916a5e643558876a19b8e9f9e92a
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000659s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001127s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000310s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000296s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000736s ]
  6. SELECT * FROM `set` [ RunTime:0.000262s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000814s ]
  8. SELECT * FROM `article` WHERE `id` = 787573 LIMIT 1 [ RunTime:0.000651s ]
  9. UPDATE `article` SET `lasttime` = 1782221379 WHERE `id` = 787573 [ RunTime:0.017860s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000372s ]
  11. SELECT * FROM `article` WHERE `id` < 787573 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000733s ]
  12. SELECT * FROM `article` WHERE `id` > 787573 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000528s ]
  13. SELECT * FROM `article` WHERE `id` < 787573 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.003489s ]
  14. SELECT * FROM `article` WHERE `id` < 787573 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001238s ]
  15. SELECT * FROM `article` WHERE `id` < 787573 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001647s ]
0.117705s