Dagger 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Dagger 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Dagger 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Dagger 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Dagger 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache
开发语言 Java 查看源码 »
操作系统 跨平台
软件类型 开源软件
所属分类 开发工具GUI 测试工具
开源组织 网易
地区 国产
投 递 者 ChenKan
适用人群 未知
收录时间 2013-03-05

软件简介

Dagger是网易杭州研究院QA团队开发的一个轻量级、运行稳定的WebUI自动化测试框架,主要基于SeleniumTestNg可以认为是对Selenium进行二次封装的一个框架(俗称 造轮子 )。之所以把这个轮子开源出来,主要在于经过了公司内部多个项目的实践,也取得了不错的成效,因此,希望开源以后可以对大家有所帮助及参考。

设计理念

Dagger首先是一个WebUI自动化框架,提供了赖以操纵浏览器的一些API。API数量不多,少于20个,但从实践上,已经基本涵盖95%的应用场景了(其余5%比较 个性 的自动化操作一般是封装在业务逻辑层面,有时候甚至会须要hack)

Dagger其次是一个测试框架,使用TestNg管理和运行用例,TestNg相关断言内嵌于上述API中。因此,在我们的测试用例里面不应该看到单独的TestNg断言的

Dagger还是一种设计风格:简约。无论是Dagger框架本身还是基于Dagger编写的测试用例,都是十分light及straightforward的,以至于会让人感觉有点土。但实践中,这两者确保了低成本、易用性、可维护性

WebUI自动化从业界看,难推进,易烂尾,原因基本在于:维护成本高、运行速度慢、稳定性差

Dagger专注于WebUI自动化,从技术上克服了速度与稳定问题(见下文)。只封装够用的浏览器操作为API,并充分简化/强化这些API,以简约的风格去降低自动化的学习及使用成本。同时,在实践中,我们主要使用Dagger编写冒烟用例、其次是主干用例,少写逻辑复杂功能,不写边边角角功能,让用例也保持清爽(在整个自动化实施过程中,会定期进行用例Review),同样易于后期维护

主要特性

  • API极少,易于上手,详见这里.

  • 提供比较完备的文档,便于快速入门,详见这里.

  • 支持单机多浏览器并发执行,大大缩短用例执行时间,详见这里

  • 通过修改TestNg源码实现失败用例自动重运行(详见这里)由此几乎消除WebUI自动化中常见的虚假失败

  • 默认使用Chrome浏览器,原因详见这里

  • 失败用例自动截屏

后续工作

  • 加入Flex/Flash自动化支持

如何使用

Dagger十分适合中小型团队从零开始WebUI自动化,这样的话,只须要直接下载整个Dagger代码就行了,Dagger本身都已经配置好了,下载后看一下使用文档就可以直接开始写用例了

也可以把Dagger打成Jar包,导入已有的自动化框架中,详见这里

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (7)

加载中
这个dagger 你们跑起来过吗
2020/08/20 15:11
回复
举报
感谢大神的慷慨开源,中国就应该多些像大神一样的无私的技术大牛
2017/02/23 22:32
回复
举报
来自网易的 Web UI 自动化测试框架! Dagger
2013/03/05 15:39
回复
举报
ui(
请问为什么要把.settings这类文件也提交? Dagger
2013/03/06 09:13
回复
举报
WebUI自动化测试框架 Dagger,好东西方,值得学习 Dagger
2013/03/06 18:13
回复
举报
Dagger已发布1.2版本,新特性详见:http://my.oschina.net/u/1265639/blog/174497 Dagger
2013/11/06 10:14
回复
举报
针对控件的操作 比如支付宝密码输入 可以怎么输入呢 #Dagger#
2016/01/30 13:31
回复
举报
更多评论
发表了资讯
2014/03/19 00:00

WebUI 自动化测试框架 Dagger V1.3 正式发布

Dagger是网易杭州研究院QA团队开发的一个轻量级、运行稳定的WebUI自动化测试框架,主要基于Selenium 及TestNG,可以认为是对 Selenium进行二次封装的一个框架(俗称造轮子)。现发布1.3版本。 新特性如下: * 支持Flash自动化测试 * 集成Arrow(开源TestNG插件)实现失败用例自动重跑 Dagger github开源地址:<https://github.com/NetEase/Dagger> Dagger 详细介绍:<http://www.oschina.net/p/dagger>...

6
37
发表了资讯
2013/11/06 00:00

Dagger 1.2 发布,WebUI自动化测试框架

Dagger是网易杭州研究院QA团队开发的一个轻量级、运行稳定的WebUI自动化测试框架,主要基于Selenium及TestNG,可以认为是对 Selenium进行二次封装的一个框架(俗称造轮子)。在之前版本的基础上,Dagger进行了多次改进,现发布1.2版本。 新特性如下: * 新增两个浏览器操作的API。 * getText(String xpath):根据xpath返回该节点text内容。 * select (String xpath, String option):通过select元素并根据可见文本选择一个选项。...

1
37
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2016/03/31 16:52

Dagger 版本

square版 v1.2 相关资料: Dependency injection using Dagger (Part 1) @ antonioleiva.com Dependency injection using Dagger (Part 2) @ antonioleiva.com Dependency injection using Dagger (Part 3) @ antonioleiva.com 利用dagger写出可测试demo, 中文原生版资料 胖虎 天外的星星 google版 v2.0...

0
0
发表了博客
2016/03/31 16:52

Dagger 版本

square版 v1.2 相关资料: Dependency injection using Dagger (Part 1) @ antonioleiva.com Dependency injection using Dagger (Part 2) @ antonioleiva.com Dependency injection using Dagger (Part 3) @ antonioleiva.com 利用dagger写出可测试demo, 中文原生版资料 胖虎 天外的星星 google版 v2.0...

0
0
发表了博客
2016/07/04 14:40

Dagger2的使用

想学习下Dagger2 ,搜了很多资料但都是附带着RxJava等其他东西,让楼主学习起来比较费时(可能比较笨),本人也没有使用过Dagger1.x,所以学习Dagger2的更是举步维艰啊。 看了很多资料,终于懂了一点,下面主要说说Dagger2的使用过程及自己见解,加深印象。说的不对的也请读者指正。 Dagger2是Android的一个依赖注入框架,可用于模块间解耦,提高代码的健壮性和可维护性。 Dagger2是基于一个有向无环图结构的依赖注入库,因此d...

0
2
发表了博客
2016/12/29 00:00

dagger2笔记

dagger2是一个依赖注入框架,依赖注入框架主要用于模块间解耦,提高代码的健壮性和可维护性。 官方简介:https://google.github.io/dagger/ 本文示例完整代码(官方代码整理到一个工程里): https://git.oschina.net/null_979_4294/dagger2demo/tree/master 参考博客: https://my.oschina.net/u/994565/blog/702385 http://blog.csdn.net/wds1181977/article/details/51822043 在Android Studio工程下的根目录的build.gradle文...

0
0
发表了博客
2016/03/31 16:52

Android Dagger用法

Android Dagger用法 按照正常流程三步走: 构建Module提供provider; 将需要注入的class 加入需要待注册的类表中; 将class的对象注入到ObjectGraph中,这样就可以获取到需要注入的对象; Dagger中还有一种间接的注入形式, 注入流程: 构建Module:声明@Singleton以及@Inject修饰构造方法 @Singleton public class SingletonModule { @Inject public SingletonModule() { } public void show(Context context){ ...

0
0
发表了博客
2016/03/31 16:52

Android Dagger用法

Android Dagger用法 按照正常流程三步走: 构建Module提供provider; 将需要注入的class 加入需要待注册的类表中; 将class的对象注入到ObjectGraph中,这样就可以获取到需要注入的对象; Dagger中还有一种间接的注入形式, 注入流程: 构建Module:声明@Singleton以及@Inject修饰构造方法 @Singleton public class SingletonModule { @Inject public SingletonModule() { } public void show(Context context){ ...

0
0
发表了博客
2016/06/05 08:42

dagger2学习心得

# dagger 2 > Dagger2是依赖注入的第三方库 ## 工程依赖 ``` groovy buildscript { repositories { mavenCentral() } dependencies { classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' } } apply plugin: 'com.android.application' apply plugin: 'com.neenbedankt.android-apt' ...... dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) ...... compile 'com.google.dagger🗡2.4' apt 'co...

0
0
2020/11/01 12:29

使用 Dagger 自定义 WorkManager

![](https://devrel.andfun.cn/devrel/posts/2020/10/6118f6ead9f86.png) [WorkManager](https://developer.android.google.cn/topic/libraries/architecture/workmanager/) 是一个 [Android Jetpack](https://developer.android.google.cn/topic/libraries/architecture/workmanager/) 扩展库,它可以让您轻松规划那些可延后、异步但又需要可靠运行的任务。对于绝大部分后台执行任务来说,使用 WorkManager 是目前 Android 平台...

0
0
发表了博客
2016/11/14 20:20

Dagger2 Scope && Qualifier

## @Scope annotation ``` @Scope public [@interface](https://my.oschina.net/u/996807) ActivityScope { } ``` Another part of **JSR-330** standard. In Dagger 2 **`@Scope`** is used to define custom scopes annotations. In short they make dependencies something very similar to singletons. Annotated dependencies are single-instances but **related to component lifecycle** (not the whole application). ...

0
0
发表了博客
2016/04/14 11:04

Dagger2使用简析

DI这块接触的比较少,大部分印象还停留在Spring的XML配置。Dagger2刚接触时理解上有点吃力,实话,一般的项目使用Dagger2比较费力,代码会变的比较复杂,但是移动平台上实现注入、分层解耦,Dagger2是个不错的框架。 首先,如何引入? project build.gradle中需要加入以下内容: buildscript {     repositories {         jcenter()     }     dependencies {         classpath 'com.androi...

0
1
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2016/07/04 17:52

Dagger2中Scope注解原理是什么?

学习了Dagger2中Scope注解,不太理解 ,比如 定义了 PerActivity ,它的作用域怎么就是Activity了呢? 怎么实现的?? @Scope @Documented @Retention(RetentionPolicy.RUNTIME) public @interface PerActivity { }

3
0
发表了问答
2016/07/31 14:22

一个简单的benchmark程序告诉你Spring依赖注入的性能有多好

依赖注入是目前Java开发过程中经常遇到的情况。现在常用的依赖注入工具有: Google Guice SpringFramework PicoContainer Dagger 这其中个人观点是兼容JSR330标准的Guice易用性最好。SpringFramework历史非常悠久,有自己的一套依赖注入体系。Pico比较轻量,不过需要手工添加Bean类到容器,用起来有点烦。Dagger使用注解处理工具,其性能非常好,是一种很有前途的DI方案。另外还有两种运行时的DI方案也放进了这个测试当中: Fe...

6
4
发表了问答
2016/06/28 17:58

dagger2编译失败

正在学习dagger2 ,但是写好一个例子,运行时 失败 请问是什么原因??? 报异常 Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'com...

3
0
发表了问答
2013/03/06 08:07

Dagger有Python接口吗?

@ChenKan 你好,想跟你请教个问题: 我看到了您发布的自动化UI测试框架。在github的文档上翻了一下,只有java sdk,请问有支持python的计划吗?

6
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
7 评论
320 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部