- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在开发一个基于 C# .net 的 selenium 框架模型。
我想从所有 Selenium 专家那里知道的一件主要事情是我是否真的应该在 c#.net 中构建框架?与在 C#.net 中构建框架相比,在 JAVA 中构建框架有什么真正的好处吗?
该框架的主要成分/USP-
易于编写测试。例如,要单击按钮,编码人员只需编写 Dom.find("#elementid").click()、Dom.WaitFor("#elementid") 或 Dom.WaitTillDisappears("#elementd")这样做的目的是抽象整个 selenium 驱动程序、属性、处理 chromedriver 以及所有对于不太有经验的编码人员来说太长的脏东西。为此,我使用 OOPS 构建了一个模型,定义了处理 chromedriver 和其他内容的整个初始化的类,因此测试人员在编写代码时不必关心它。
我正在使用单元测试框架,例如单元测试和定义代表测试运行和测试用例的抽象类,因此编写代码的人要做的就是简单地定义测试用例并编写它们的测试用例在其下编写脚本并将这些案例作为单元测试运行。
我添加了数据库日志记录,它将为执行的每个操作创建日志,从“尝试查找元素”到“在元素中键入某些内容”,因此如果出现任何失败,人们有能力研究日志并找出到底出了什么问题。
错误处理是使用 SeleniumExceptions 完成的,我将覆盖这些消息以使其对框架用户更具可读性。
我正在考虑创建一个简单的抽象类,比如说 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 个主要区域:
另一个值得拥有的功能是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/
我以前做过很多关系数据库设计,我认为我对其中一些设计模式有经验......但是,我想不出从哪里开始解决这个问题。 我正在创建一个健身房数据库,它将在“健身房”表中包含基本的健身房信息。 然后我将有另一
大家好,我有时需要从网站上自动执行数据收集任务。有时我需要目录中的一堆 URL,有时我需要一个 XML 站点地图(是的,我知道有很多软件和在线服务)。 无论如何,作为我之前问题的后续,我编写了一个可以
我不明白为什么,但客户端库中似乎没有机制可以为 Windows Azure 表存储并行执行许多查询。我创建了一个模板类,可以用来节省大量时间,欢迎您随意使用它。不过,如果您能将其拆开,并提供有关如何改
每次我的作业中出现这些问题中的一个时,我都会弄错...任何人都可以帮助我理解吗?还是老师的 key 关了? (我没有办法知道,因为我没有得到正确的答案,它只是让我知道我的错误。) Assume x =
我计划参加为期一周的有关该主题的类(class)。我主要参与 Java 项目,并且对 C 和 C++ 也有一定的了解。而且,我有兴趣了解有关并发编程的更多信息,并希望获得有关本类(class)的反馈。
有谁知道提交 C# 4.0 反馈的官方方法,以便 Anders 和他的团队能够获得反馈并能够对提交的内容做出回应? 最佳答案 可能是论坛here ,或(对于错误)connect (他们为 .NET 4
这是我想要实现的示例 - http://home.mcafee.com/default.aspx 我想知道如何让页面右侧的反馈标签/按钮稍微打开而不是完全滑出。然后单击,我想打开一个页面(不是 jqu
我遇到过这样的情况:我有一个托管第三方网站的 iframe。我只需要知道 iframe 已导航到其最终的“成功”url,这样我就可以做出响应。 但是,正如您所知,由于 CORS 安全问题,现代浏览器会
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 3 年前。 Improve this qu
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
我使用数据库记录管理构建 JQuery/JS/PHP/mySQL 应用程序,需要在 AJAX 调用、修改后端数据库记录时向用户提供可靠且完整的反馈。恕我直言,问题是 $.ajax success: 和
要检测无效 token ,我应该多久检查一次反馈服务? 我已经使用 APNS 服务实现了一个广播系统。我打开一个连接,发送所有 APNS 消息,然后断开连接。然后我在广播完成后立即打开一个反馈连接,并
是否可以使用 shader toy 在下一帧中访问渲染图像 (GLSL)? 最佳答案 现在他们已经实现了渲染到缓冲区,所以你可以渲染到缓冲区。实际上,如果需要,您最多可以使用四个缓冲区。还有, wat
我在Delphi XE5中开发了一个数据快照服务器。 一个客户端连接到服务器。 一个客户端触发一种方法(比如说Server.ComputeTables)。 服务器正在使用ComputeTables方法
我想改进应用程序中的 AJAX 反馈(在我的模态中发布远程表单后等)。 我已经收到一些很好的反馈,显示了加载动画 $(document).ajaxStart(function(){ $('.l
我能够通过 azure-iot-sdk-python 将消息和报告属性从 iot 集线器发送到模拟设备。现在我想获得从 IoT 中心发送到设备/模块的消息的确认 (success,expired,re
我能够通过 azure-iot-sdk-python 将消息和报告属性从 iot 集线器发送到模拟设备。现在我想获得从 IoT 中心发送到设备/模块的消息的确认 (success,expired,re
我的老板想在反馈表单中添加一个选择表单,要求用户选择他/她的国家/地区。我可以通过以下方式实现这一目标: Select country = form.addItem().addSelect("
如何设置反馈,以便在输入数字时 slider 的值发生变化? JS: $('.catalog-filter-change-price_slider-range').slider({ range:
我有一个 CQRS 解决方案,它在 HTML/JavaScript 应用程序中利用 NServiceBus 和网络 worker 。 我有场景 WebAPI 发送命令 CommandHandler 更
我是一名优秀的程序员,十分优秀!