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

页面对象模型还是JavaScript测试替代方案?,javascript,webdriver,cucumberjs,Javascript,Webdriver,Cucumberjs,页面对象模型仍然是自动化web应用程序的最佳方式吗 对我来说,剧本模式似乎是更好的管理方式 或者使用JavaScript替代方案,例如Cucumber.js和webdrivero的验收测试。您的问题听起来似乎只有一个答案,但实际上,如果您正确编写代码,您可以将这些答案合并在一起 页面对象模型 这有助于将页面上的元素与代码的其余部分分离。如果实现正确,只需更改POM中的一行,就可以针对使用该页面的所有场景更正页面上的更改 nextButton.click(); fullName.sendKeys(

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

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


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

您的问题听起来似乎只有一个答案,但实际上,如果您正确编写代码,您可以将这些答案合并在一起

页面对象模型

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

nextButton.click();
fullName.sendKeys("John Doe");
剧本模式

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

james.attemptsTo(
   goToTheNextPage(),
   fillOutHisDetails()
);
如果旅程中的工作流程略有改变,你可以简单地重新安排剧本模式,或者删除不再需要的动作。 在上述示例中,如果企业决定登记表应为单页而不是多页,则删除这一行更有意义:

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
合并它们

如果您想要真正的人类可读代码,可以合并这三种代码

您拥有业务级别语言的功能文件。 你的步骤定义是根据剧本模式编写的。 您可以使用页面对象模型编写剧本模式步骤

这看起来可能有很多层,但这意味着业务将能够理解场景,回顾代码的测试人员和开发人员将理解特定旅程的工作流,并且在调试时进一步查看代码将允许测试人员通过只更改一行代码在多个行程中更改元素值