我使用带有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来获得这些好处吗?
答案 0 :(得分:3)
从Gerrit0上面的评论中进一步研究,似乎一个很好的方法就是使用TypeScript(这是一个静态类型的JavaScript版本):
答案 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
的静态类型版本):
答案 2 :(得分:0)
如果您使用像IntelliJ IDEA这样的Jetbrains产品,它将为您完成代码完成和适当的导航。在javascript世界页面对象也是一种已知的模式。 AngularJs也在它自己的e2e测试框架(http://www.protractortest.org/#/page-objects)中提供它。我个人使用IIFE作为页面对象,IntelliJ完成剩下的工作。如果它不符合您的需求,您仍然可以选择打字稿并将其转换为javascript。