selenium - 使用 Screenplay 模式而不是 Page 对象的优点/缺点是什么?

标签 selenium automated-tests cucumber pageobjects serenity-bdd

我在 youtube 上看过一个视频建议使用剧本模式作为使用通常的页面对象的替代方法。我看到的唯一优点是页面对象类没有那么大。还有什么我想念的吗?我一直在搜索,所有网站总是使用 serenity bdd 引用 youtube 讲座上的示例。有人可以解释为什么它比使用页面对象更好(或者可能更糟)?

一个不使用 serenity bdd 的例子会很有帮助。

最佳答案

简而言之,ScreenPlay 鼓励更好的软件工程实践,从而使测试的编写速度更快,从长远来看更易于维护,但需要更好地理解 OOP 才能充分发挥其优势(尽管它确实非常适合初级工程师只要身边有几个懂模式的高级工程师就行)。

页面对象只是作为垫脚石,帮助自动化测试人员引入更好的测试自动化实践,但它仍然可能导致难以维护的代码。看看这篇文章的起源故事:https://ideas.riverglide.com/page-objects-refactored-12ec3541990 .

Screenplay 还有其他一些实现,包括:
- J叙述:https://bitbucket.org/testingreflections/jnarrate/wiki/Examples
- 旁白:https://github.com/tim-group/narrative

ScreenPlay 是一个 Actor 或以用户为中心的模型,在许多情况下,它比步骤库更容易扩展和更可重用。编写任务后,您很少需要更改它(尊重开闭原则)。以参与者为中心的模型还可以更轻松地对场景中多个用户交互的情况进行建模(例如,使用不同的浏览器)。 Jan Molak 在这篇文章中谈到了剧本以 Actor 为中心的一面:https://janmolak.com/user-centred-design-how-a-50-year-old-technique-became-the-key-to-scalable-test-automation-66a658a36555

关于selenium - 使用 Screenplay 模式而不是 Page 对象的优点/缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43231285/

相关文章:

python - 是否可以像 Selenium 中的移动驱动程序一样使用 PhantomJS?

django - 权限错误 : [Errno 13] Permission denied: 'C:\\Users\\...\\AppData\\Local\\Temp\\tmp24xoaa7g'

nginx - 测试 NGINX 配置

java - 如何在 spring boot 中运行并行测试 jUnit5 - Cucumber 版本 5 及更高版本

ruby - 捕获小 cucumber 表中的尾随空格

java - DOM 中不再存在移动元素 - selenium

python - 被带有 selenium 和 chromedriver 的网站阻止

java - 在 selenium Web 驱动程序 firefox 中使用 javascriptexecutor 单击打印按钮时无法关闭打印对话框

javascript - 执行 TestCafe 断言的正确方法是什么

java - 如何判断 Cucumber-JVM 中某个步骤正在操作表的哪一行?