JavaScript 是否与严格的页面对象模式兼容?

Is JavaScript compatible with strict Page Object Pattern?

我使用带有 Java (https://code.google.com/p/selenium/wiki/PageObjects) 的页面对象模式构建了各种测试自动化框架。

我发现的两大好处是:

1) 你可以看到当你有一个页面的实例时可以使用哪些方法(例如输入主页。将显示你可以从主页调用的所有 actions/methods)

2) 因为导航方法(例如 goToHomepage())return 是后续页面(例如主页)的一个实例,所以您只需编写代码并查看它会将您带到何处即可在测试中导航。

例如

WelcomePage welcomePage = loginPage.loginWithValidUser(validUser);
PaymentsPage paymentsPage = welcomePage.goToPaymentsPage();

这些优点与 Java 完美配合,因为对象的类型(或本例中的页面)是 IDE 已知的。

但是,对于 JavaScript(动态类型语言),对象类型在任何时候都不是固定的,并且通常与 IDE 不明确。因此,我看不出如何在使用 JavaScript(例如使用 Cucumber)构建的自动化套件上实现这些好处。

任何人都可以告诉我如何使用 Java脚本和页面对象模式来获得这些好处吗?

从上面 Gerrit0 的评论和进一步调查来看,实现这一点的一个好方法似乎是使用 TypeScript(它是 JavaScript 的静态类型版本):

https://en.wikipedia.org/wiki/TypeScript

如果您使用 IntelliJ IDEA 等 Jetbrains 产品,它会为您完成代码完成和正确的导航。在 javascript 世界中,页面对象也是一种已知模式。 AngularJs 在它自己的 e2e 测试框架中也提供了它 (http://www.protractortest.org/#/page-objects)。就我个人而言,我将 IIFE 用于页面对象,而 IntelliJ 会完成其余的工作。如果它不符合您的需求,您仍然可以选择 typescript 并将其转换为 javascript.

我不太了解这个patterns.but我会提供一些细节,也许对你有帮助。 http://www.guru99.com/page-object-model-pom-page-factory-in-selenium-ultimate-guide.html

http://www.assertselenium.com/automation-design-practices/page-object-pattern/

似乎实现此目的的一个好方法是使用 TypeScript(这是 JavaScript 的静态类型版本):

https://en.wikipedia.org/wiki/TypeScript