{"id":13461668,"url":"https://github.com/ctripcorp/flybirds","last_synced_at":"2025-05-14T09:08:15.555Z","repository":{"id":37040882,"uuid":"443025198","full_name":"ctripcorp/flybirds","owner":"ctripcorp","description":"基于自然语言的，跨端跨框架 BDD UI 自动化测试方案，BDD testing, Python style, Present by Trip Flight","archived":false,"fork":false,"pushed_at":"2025-04-22T11:36:34.000Z","size":15792,"stargazers_count":878,"open_issues_count":33,"forks_count":104,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-04-22T12:46:46.080Z","etag":null,"topics":["android","automation","bdd-style-testing-framework","flutter-test","ios","python","test-automation","testing","web"],"latest_commit_sha":null,"homepage":"https://ctripcorp.github.io/flybirds/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ctripcorp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-12-30T09:17:18.000Z","updated_at":"2025-04-22T11:36:38.000Z","dependencies_parsed_at":"2023-02-17T14:16:24.946Z","dependency_job_id":"3a0b5558-988c-4305-ad4c-f79265e87c3e","html_url":"https://github.com/ctripcorp/flybirds","commit_stats":{"total_commits":579,"total_committers":10,"mean_commits":57.9,"dds":0.5803108808290156,"last_synced_commit":"3057fd4f5762a72ad17c274d193c79c7f190255e"},"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctripcorp%2Fflybirds","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctripcorp%2Fflybirds/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctripcorp%2Fflybirds/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctripcorp%2Fflybirds/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ctripcorp","download_url":"https://codeload.github.com/ctripcorp/flybirds/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252424908,"owners_count":21745834,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","automation","bdd-style-testing-framework","flutter-test","ios","python","test-automation","testing","web"],"created_at":"2024-07-31T11:00:51.670Z","updated_at":"2025-05-05T01:37:19.627Z","avatar_url":"https://github.com/ctripcorp.png","language":"Python","funding_links":[],"categories":["Python","UI Testing"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg width=\"350\" src=\"./docs/logo.png\" alt=\"logo\" /\u003e\n\u003c/p\u003e\n\n# Flybirds | [English Version](https://github.com/ctripcorp/flybirds/blob/main/docs/readme_en.md)\n\n[![downloads](https://pepy.tech/badge/flybirds)](https://pepy.tech/project/flybirds)\n[![Downloads/month](https://pepy.tech/badge/flybirds/month)](https://pepy.tech/project/flybirds)\n[![Downloads/week](https://pepy.tech/badge/flybirds/week)](https://pepy.tech/project/flybirds)\n[![pypi version](https://img.shields.io/pypi/v/flybirds.svg)](https://pypi.python.org/pypi/flybirds)\n[![pyversions](https://img.shields.io/pypi/pyversions/flybirds.svg)](https://pypi.python.org/pypi/flybirds)\n\n\u003e 跨端跨框架 BDD UI自动化测试方案\n\n## 背景\n\n**Flybirds** 是一套基于BDD模式的前端UI自动化测试框架，提供了一系列开箱即用的工具和完善的文档。\n\n多端研发对于当今时代的前端开发来说是个绕不过去的话题，为了解决这些问题，行业内推出了很多开发方案，但是跨端 UI 自动化测试的解决方案并不多。\n\nFlybirds从2022年初开源至今，通过与社区内活跃用户的交流和反馈，推出了v0.4 版本的跨端跨框架测试方案，一套脚本多端运行，插件化的架构设计，也方便社区开发者自由加入扩展，一起共建成长。\n\n## 我们需要一个怎么样的多端测试方案\n近几年，每隔一段时间就会有很多新的开发框架出现，带来了更好的开发体验和性能的同时，也给自动化测试创造了很多难题。\n\n我们到底需要一个怎样的多端测试方案呢？从 Flybirds 的视角来说，我们希望多端测试不会成为研发流程中的障碍，特别是多端生态整体呈现欣欣向荣之时，自动化测试方案应和开发方案共同成长。\n\n不论是 Web 、Android、iOS、Flutter、React Native 还是小程序，理想的方案应该进行多端适配，保留良好扩展，兼顾更多框架，由社区共同建设，促进整体生态繁荣，因此就有了Flybirds 向社区提供的跨端跨框架测试方案。\n\n\n## 插件化架构\n插件化架构帮助我们将每一个端的能力拆分开, 插件提供运行时所需的组件、API 和配置，Flybirds 将它们分别注入对应的生命周期。\n\n![Arc](https://flybirds.readthedocs.io/zh_CN/latest/_images/flybirds.png)\n\n* 基于Behave，实现BDD中“自然语言测试用例文档”和“自动化测试代码”关联所需要用到的支持BDD工具。\n* 基于Airtest，实现BDD中“测试用例能在自动化测试平台上执行”所需要用到的APP端UI自动化测试能力。\n* 基于Playwright, 实现BDD中“测试用例能在自动化测试平台上执行”需要用到Web端UI自动化测试能力。\n* 基于PaddleOCR和OpenCV, 实现BDD中“测试用例能在自动化测试平台上执行”需要用到的OCR和图像识别能力。\n* 基于Multiple-cucumber-html-reporter，实现可视化的测试报告\n\n## 文件结构\n\n```bash\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n├─ cli\t                        脚手架\n├─ core\n|   ├─ config_manage.py         配置管理\n|   ├─ dsl\n|   │    ├─ globalization       国际化处理\n|   │    └─ step                Step 列表\n|   ├─ global_resource.py       全局配置\n|   ├─ launch_cycle             生命周期管理\n|   └─ plugin\n|        ├─ event               事件管理\n|        ├─ plugin_manager.py   插件管理\n|        └─ plugins\t\t\t\t\t\n|             ├─ android        Andriod 相关处理\n|             ├─ ios            iOS 相关处理\n|             └─ web            Web 相关处理\n├─ report                       报告\n├─ template                     模板处理\n└─ utils\t\t\t\t\t\t\t\t\n\n```\n\n## 特性\n\n使用Flybirds你能够完成大部分的手机端自动化操作，以下是一些帮助入门的特性描述：\n- 基于BDD模式，类自然语言语法\n- 支持自动化操作、表单提交、UI元素校验、键盘输入、Deeplink跳转等\n- 支持 Android、iOS、React Native、Flutter、Web\n- 多端脚本复用\n- 支持多浏览器渲染引擎：Chromium、WebKit 和 Firefox\n- 支持多浏览器并发模式下的兼容性测试\n- 默认支持英文、中文两种语言，支持更多语言扩展\n- 插件式设计，支持用户自定义自动化扩展\n- 提供cli脚手架，快速搭建项目\n- 提供html报告\n\n## Enjoying this?\n\n请给我们支持，点上一颗 Star\n\n## 教程\n- [常见问题](https://flybirds.readthedocs.io/zh_CN/latest/BDD-UI-Testing-Flybirds.html#id89)\n- [环境准备](https://flybirds.readthedocs.io/zh_CN/latest/BDD-UI-Testing-Flybirds.html#id6)\n- [运行前检查](https://flybirds.readthedocs.io/zh_CN/latest/BDD-UI-Testing-Flybirds.html#id8)\n- [运行](https://flybirds.readthedocs.io/zh_CN/latest/BDD-UI-Testing-Flybirds.html#id10)\n- [项目细节](https://flybirds.readthedocs.io/zh_CN/latest/BDD-UI-Testing-Flybirds.html#id13)\n- [DSL step](https://flybirds.readthedocs.io/zh_CN/latest/BDD-UI-Testing-Flybirds.html#id18)\n- [Android端例子](https://flybirds.readthedocs.io/zh_CN/latest/BDD-UI-Testing-Flybirds.html#android)\n- [iOS端例子](https://flybirds.readthedocs.io/zh_CN/latest/BDD-UI-Testing-Flybirds.html#ios)\n- [OCR\u0026OpenCV使用例子](https://flybirds.readthedocs.io/zh_CN/latest/BDD-UI-Testing-Flybirds.html#ocr-opencv)\n- [Web端例子](https://flybirds.readthedocs.io/zh_CN/latest/BDD-UI-Testing-Flybirds.html#id69)\n- [多端应用例子](https://flybirds.readthedocs.io/zh_CN/latest/BDD-UI-Testing-Flybirds.html#id80)\n- [数据驱动参数化](https://flybirds.readthedocs.io/zh_CN/latest/BDD-UI-Testing-Flybirds.html#id83)\n- [多浏览器并发](https://flybirds.readthedocs.io/zh_CN/latest/BDD-UI-Testing-Flybirds.html#id84)\n- [自定义框架扩展](https://flybirds.readthedocs.io/zh_CN/latest/BDD-UI-Testing-Flybirds.html#id87)\n- [多语言](https://flybirds.readthedocs.io/zh_CN/latest/BDD-UI-Testing-Flybirds.html#id88)\n- [持续集成](https://flybirds.readthedocs.io/zh_CN/latest/BDD-UI-Testing-Flybirds.html#id90)\n- [更多细节](https://flybirds.readthedocs.io/zh_CN/latest/BDD-UI-Testing-Flybirds.html#)\n\n\n## 贡献\n\n1. Fork 仓库\n2. 创建分支 (`git checkout -b my-new-feature`)\n3. 提交修改 (`git commit -am 'Add some feature'`)\n4. 推送 (`git push origin my-new-feature`)\n5. 创建 PR\n\n\n## 欢迎 fork 和反馈\n\n如有建议或意见，欢迎在 GitHub [issues](https://github.com/ctripcorp/flybirds/issues) 区提问\n\n\n## 协议\n\n本仓库遵循 [MIT 协议](http://www.opensource.org/licenses/MIT)\n\n\n## 致谢\n\n感谢以下仓库让Flybirds变得更好：\n- [airtest](https://github.com/AirtestProject)\n- [behave](https://github.com/behave)\n- [playwright](https://github.com/microsoft/playwright-python)\n- [multiple-cucumber-html-reporter](https://github.com/wswebcreation/multiple-cucumber-html-reporter)\n- [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)\n\n## 技术交流\n![Chats](https://flybirds.readthedocs.io/zh_CN/latest/_images/wechat21.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctripcorp%2Fflybirds","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fctripcorp%2Fflybirds","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctripcorp%2Fflybirds/lists"}