Atata:一个基于Selenium的C

程序员咋不秃头 2024-09-10 00:51:11

项目开发中,为了提高测试效率、减少重复工作,我们一般都考虑使用自动化测试框架。

项目简介

Atata Framework 是一个基于 Selenium WebDriver 的 C#/.NET Web UI 测试自动化全功能框架。

它使用流畅的页面对象模式;具有内置的日志记录系统;包含独特的触发器功能;具有一组即用型组件。

该框架的关键思想之一是为定义和使用页面对象提供简单直观的语法,页面对象实现需要尽可能少的代码。

而且描述一个页面对象类,无需任何方法,只需一组用属性标记的属性,这些属性就代表页面组件。

项目特点

平台:.NET Standard 2.0(支持 .NET 5+、.NET Framework 4.6.1+ 和 .NET Core/Standard 2.0+)

WebDriver:基于 Selenium WebDriver,并保留其所有功能。

页面对象模型:提供独特的流畅页面对象模式,易于实现和维护。

组件:包含一系列现成的组件,如输入框、表格、列表等。

集成:支持任何 .NET 测试引擎(如 NUnit、xUnit、SpecFlow)以及 CI 系统(如 Jenkins、GitHub Actions、TeamCity)。

触发器:提供一系列触发器,用于绑定不同事件以扩展组件行为。

验证:包含流畅的断言方法和触发器,用于组件和数据验证。

可配置:定义默认的组件搜索策略以及额外的设置,支持通过 JSON 进行灵活配置。

报告/日志:内置可定制的日志系统,支持截图和快照捕获功能。

可扩展:支持通过额外的包(如 Atata.HtmlValidation、Atata.Bootstrap、Atata.KendoUI)进行扩展。

使用方法

以下是一个简单的登录页面对象的示例:

using Atata; namespace SampleApp.UITests { using _ = SignInPage; [Url("signin")] // 页面的相对URL [VerifyH1] // 验证H1标题文本在页面对象初始化时等于"Sign In" public SignInPage : Page<_> { [FindByLabel] // 通过包含"Email"的<label>元素找到对应的<input>元素 public TextInput<_> Email { get; private set; } [FindById("password")] // 通过ID找到密码输入框 public PasswordInput<_> Password { get; private set; } [FindByValue(TermCase.Title)] // 通过值找到登录按钮 public Button<_> SignIn { get; private set; } } }

设置

[SetUp]public void SetUp(){ AtataContext.Configure() .UseChrome() .UseBaseUrl("https://demo.atata.io/") .Build();}

登录测试

[Test]public void SignIn(){ Go.To<SignInPage>() .Email.Set("admin@mail.com") .Password.Set("abc123") .SignIn.Click();}

项目地址

https://github.com/atata-framework/atata

0 阅读:0