页面对象模型或 JavaScript 测试替代方案?

Page Object Model or JavaScript testing alternatives?

页面对象模型仍然是自动化 Web 应用程序的最佳方式吗?

对我来说,剧本模式似乎是一种更好的管理方式。

或者使用 JavaScript 替代方案,例如使用 Cucumber.js 和 WebdriverIO 进行验收测试。

你的问题听起来好像只有一个答案,但实际上如果你正确编码,你可以将所有这些合并在一起。

页面对象模型

这有利于将页面上的元素与代码的其余部分分开。如果实施正确,只需更改 POM 中的一行,即可针对使用该页面的所有场景更正页面上的更改。

nextButton.click();
fullName.sendKeys("John Doe");

剧本模式

这有利于分离发生在不同页面、不同工作流程上的操作。

james.attemptsTo(
   goToTheNextPage(),
   fillOutHisDetails()
);

如果旅途中的工作流程略有变化,我们的想法是您可以简单地重新排列 Screenplay 模式,或删除不再需要的操作。 在上面的示例中,如果企业决定注册表单应该是单页而不是多页,那么删除这一行会更有意义:

goToTheNextPage(),

而不是删除我会放入的 2:

driver.findElement({css:"#next"}).click();
driver.findElement({css:"#registrationDetails"});

CucumberJS + WebdriverIO

用纯商业语言来刻画一个场景的信息很好

Scenario: I am filling out the registration form
   Given I am a new user
     And I want to register for an account
   When I fill out the registration form
   Then I should be able to log in

合并它们

如果你想要真正可读的代码,你可以合并所有这 3 个。

您拥有业务级别语言的功能文件。 您在编写步骤定义时考虑了 Screenplay 模式。 您拥有使用页面对象模型编写的剧本模式步骤。

这看起来层次很多,但意味着业务将能够理解场景,测试人员和开发人员回头看代码将了解某个旅程的工作流程,并进一步查看调试代码将允许测试人员通过仅更改一行代码来更改多个旅程中的元素值。