gpt4 book ai didi

java - 需要有关我的 Selenium 框架模型的反馈

转载 作者:行者123 更新时间:2023-12-02 04:27:33 26 4
gpt4 key购买 nike

我目前正在开发一个基于 C# .net 的 selenium 框架模型。

我想从所有 Selenium 专家那里知道的一件主要事情是我是否真的应该在 c#.net 中构建框架?与在 C#.net 中构建框架相比,在 JAVA 中构建框架有什么真正的好处吗?

该框架的主要成分/USP-

  1. 易于编写测试。例如,要单击按钮,编码人员只需编写 Dom.find("#elementid").click()、Dom.WaitFor("#elementid") 或 Dom.WaitTillDisappears("#elementd")这样做的目的是抽象整个 selenium 驱动程序、属性、处理 chromedriver 以及所有对于不太有经验的编码人员来说太长的脏东西。为此,我使用 OOPS 构建了一个模型,定义了处理 chromedriver 和其他内容的整个初始化的类,因此测试人员在编写代码时不必关心它。

  2. 我正在使用单元测试框架,例如单元测试和定义代表测试运行和测试用例的抽象类,因此编写代码的人要做的就是简单地定义测试用例并编写它们的测试用例在其下编写脚本并将这些案例作为单元测试运行。

  3. 我添加了数据库日志记录,它将为执行的每个操作创建日志,从“尝试查找元素”到“在元素中键入某些内容”,因此如果出现任何失败,人们有能力研究日志并找出到底出了什么问题。

  4. 错误处理是使用 SeleniumExceptions 完成的,我将覆盖这些消息以使其对框架用户更具可读性。

  5. 我正在考虑创建一个简单的抽象类,比如说 PageComponents.cs,它可以是一个抽象类,并且具有检索页面信息、获取 id、属性、类等基本功能。喜欢在 POM 中创建脚本的人可以简单地使用 By 类型定义所有组件,因此假设他们所要做的就是创建另一个名为 LoginPage.cs 的类文件,从 PageComponents.cs 继承,然后简单地开始声明他们的对象。在用户将编写脚本的其他文件中,他们可以通过初始化 LoginPage 来简单地访问这些 Page 对象。任何更改,在登录页面中,他们所要做的就是更改 LoginPage.cs 中对象的属性

现在,我写整个讨论的原因是为了了解所有正在研究 selenium 或曾经研究过框架的人的观点。我想了解我正在尝试遵循的这个框架模型的所有优点和缺点,如果你们有更好的建议(你们已经在研究),那就太好了。我开始这次讨论是为了了解比我更有经验的其他公司和个人正在遵循什么。预先感谢您提供宝贵的反馈!

最佳答案

看起来你做得很好。如果您没有任何特殊原因从 C# 迁移(并重新实现)到 JAVA,我的建议是不要这样做。恕我直言,这不会带来任何好处:

of building the framework in JAVA over building it in C#.net

概念几乎相同,您需要的所有功能都可以支持两种目标语言。

但是我没有看到任何BDD (对于 .Net 来说是 Specflow )。最大的优点是它是所有相关团队成员(PO、开发人员、QA、BA 等)的共同点,并且非常适合

not-so-experienced-coder. .... so the tester doesn't have to care about it while writing the code.

围绕

的抽象

whole selenium driver,properties,handling chromedriver, and all the dirty stuff thats too long

是一个好方法。也许您可以使用 Test harness 进一步设计它主要概念 - 将您的测试逻辑划分为 single responsibility 的 3 个主要区域:

  • 测试引擎 - 不会携带有关测试产品的任何信息
  • 测试数据 - Data driven或动态生成
  • 测试规范 - 包括测试步骤、环境变量等。

另一个值得拥有的功能是image recognition ,这将验证布局。

由于本质上所有 UI 测试都很慢 - 您打算并行执行测试吗?如果是 - this article将是一个很好的起点。还有in-memory DB内存optimization是有可能的。

POM是一个很好的做法

I was thinking of creating a simple abstract class, lets say PageComponents.cs which could be an abstract class and have have basic functions like retrieving page info, getting id,attributes,class,etc.

如果您希望继续保持简单性,那么LoadableComponent是一种方法。它会给你一个很好的Information hiding ,但会损害单一责任,因为它将 Actions 逻辑(点击、等待等)引入到您的 Page 对象中(表示未与模型完全分离)。但无论如何,设计都是一个权衡的问题。

关于java - 需要有关我的 Selenium 框架模型的反馈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31939847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com