java - Ruby 是否兼容严格的页面对象模式?

标签 java ruby testing automation pageobjects

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

我发现的两大好处是:

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

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

例如

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

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

但是,对于 Ruby,对象类型在任何时候都不是固定的,而且对于 IDE 来说通常是模棱两可的。因此,我看不出如何在使用 Ruby 构建的自动化套件上实现这些好处(例如,通过使用 Cucumber)。

谁能告诉我如何将 Ruby 与页面对象模式结合使用来获得这些好处?

最佳答案

从一些进一步的调查来看,最初的要求似乎可以使用实例变量来满足:

Given(/^I am on the launch page$/) do
  @launch_page ||= LaunchPage.new
end

When(/^I open the set alarm time page$/) do
  @set_alarm_page = @launch_page.goto_set_alarm_page
end

When(/^I open our apps from the home page$/) do
  @launch_page.navigation_toolbar.open_our_apps
end

Then(/^I should see the homepage alarm time is (\d+)$/) do |alarm_time|
  alarm_time_actual = @launch_page.get_alarm_time
  assert_equal(alarm_time, alarm_time_actual)
end

只要在步骤定义类的某处显式创建一个新的页面对象(在上面的示例中:LaunchPage.new),那么所有后续页面都会出现并提供智能感知方法/属性值。

关于java - Ruby 是否兼容严格的页面对象模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31070955/

相关文章:

java - 这个 Java 语法有什么问题?

ruby - 使用 method_added 获得一个无限循环并一起初始化

ruby - Selenium RC 与 safari 问题 - Selenium::WebDriver::Error::UnknownError: Executor has not been started yet

java - 如何覆盖此方法的所有分支?

testing - 如果 Appium/Mocha 测试失败,如何中断 Travis CI 构建?

Java 正则表达式 : match whole word with word boundary

java - eclipse 错误 : 'Selection does not contain a main type/an applet'

c - ruby的rb_raise如何停止调用它的c函数的执行?

selenium - 如何使用 selenium 和 java 测试 Electron 应用程序

java - 为每个连接的客户端单独的 websocket