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

时间:2017-01-31 14:28:34

标签: javascript java testing ui-automation pageobjects

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

我发现的两大好处是:

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

2)因为导航方法(例如goToHomepage())返回后续页面的实例(例如主页),所以只需编写代码并查看它所在的位置即可浏览测试。

e.g。

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

这些好处与Java完美配合,因为IDE知道对象的类型(或本例中的页面)。

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

有人能告诉我如何使用带有页面对象模式的JavaScript来获得这些好处吗?

3 个答案:

答案 0 :(得分:3)

从Gerrit0上面的评论中进一步研究,似乎一个很好的方法就是使用TypeScript(这是一个静态类型的JavaScript版本):

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

答案 1 :(得分:2)

我对这种模式并不多。但我会给出一些细节,也许对你有所帮助。 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

答案 2 :(得分:0)

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