【发布时间】:2015-11-03 13:33:48
【问题描述】:
我目前正在开发一个基于 C# .net 的 selenium 框架模型。
我想从所有 selenium 专家那里知道的一件主要事情是,我是否真的应该在 c#.net 中构建框架?用 JAVA 构建框架比用 C#.net 构建框架有什么真正的好处吗?
这个框架的主要成分/USP-
轻松编写测试。例如,对于单击按钮,编码人员必须简单地编写 Dom.find("#elementid").click()、Dom.WaitFor("#elementid") 或 Dom.WaitTillDisappears("#elementd") 这样做的目的是抽象出整个 selenium 驱动程序、属性、处理 chromedriver,以及所有对于没有经验的编码人员来说太长的脏东西。为此,我使用 OOPS 构建了一个模型,定义了处理 chromedriver 和其他内容的整个初始化的类,因此测试人员在编写代码时不必关心它。
我正在使用单元测试框架,例如单元测试和定义代表测试运行和测试用例的抽象类,因此编写代码的人只需定义测试用例并编写它们的在其下编写脚本并将这些案例作为单元测试运行。
我添加了 Db 日志记录,它将为执行的每个操作创建日志,从“尝试查找元素”到“在元素中键入内容”,因此如果任何操作失败,一个人有能力研究日志并找出究竟出了什么问题。
错误处理是使用 SeleniumExceptions 完成的,我正在覆盖消息以使其对框架用户更具可读性。
我正在考虑创建一个简单的抽象类,比如说 PageComponents.cs,它可以是一个抽象类,并具有检索页面信息、获取 id、属性、类等基本功能。喜欢在 POM 中创建脚本的人可以简单地使用 By 类型定义所有组件,因此假设他们所要做的就是创建另一个名为 LoginPage.cs 的类文件,从 PageComponents.cs 继承,然后简单地开始声明他们的对象。在用户将编写脚本的其他文件中,他们可以通过初始化 LoginPage 来简单地访问这些 Page 对象。任何更改,在 loginpage 中,他们所要做的就是更改 LoginPage.cs 中对象的属性
现在,我写这整个讨论的原因是为了了解所有从事 selenium 工作或从事过框架工作的人的观点。我想了解我正在尝试遵循的这个框架模型的所有优点和缺点,如果你们有什么更好的建议(你们已经研究过),那就太好了。我开始这个讨论是为了了解其他比我更有经验的公司和个人正在遵循什么。提前感谢您提供宝贵的反馈意见!
【问题讨论】:
-
这将是一个有趣的讨论,但我认为 SO 不适合进行有趣的讨论。
-
嗯,您是否已经尝试过一些行为或测试驱动开发方法?您可以尝试使用 JBehave 的 Serenity BDD(前 thucydides),例如,您已经实现了许多想要实现的功能(页面对象、活动文档、处理测试步骤等)
-
嘿@stuXnet,你认为我应该把这个贴到别的地方吗?堆栈交换会是这个讨论的更好地方。我基本上想要尽可能多的反馈。
-
@spcial,感谢您的回复。只是想知道 Serenity 是否基于 C#.net?
-
@Prateek 我在 Java 中使用 serenity,所以我不能告诉你,但也许有类似的 C# 工具(例如 stackoverflow.com/questions/8922079/…)
标签: java c# unit-testing selenium automation