【问题标题】:Best practice for checking for error messages using Page Objects使用页面对象检查错误消息的最佳实践
【发布时间】:2014-10-27 20:27:52
【问题描述】:

使用页面对象检查错误消息的最佳实践。因此,我在检查各种错误消息的代码方面存在重复。我的问题是使用 Page Objects/page_objects gem,有没有办法可以删除这个重复?我的代码:

def check_error_message
  expected_text = "The highlighted fields must be filled out correctly."
  css = "button-error"
  actual_text = @browser.span(:class, css).text

  actual_text.should == expected_text
  puts "Span class '#{css}' expected text: #{expected_text}"
  puts "Span class '#{css}' actual text: #{actual_text}"
end

def check_password_weak_message
  expected_text = "Password is too weak, please choose a different password."
  css = "formError"
  actual_text = @browser.div(:class, css).text

  actual_text.should == expected_text
  puts "Span class '#{css}' expected text: #{expected_text}"
  puts "Span class '#{css}' actual text: #{actual_text}"
end

def check_dupe_email_message
  expected_text = "This email address is already in use by another ID.me account"
  css = "label-error"
  actual_text = @browser.div(:class, css).text

  actual_text.should == expected_text
  puts "Span class '#{css}' expected text: #{expected_text}"
  puts "Span class '#{css}' actual text: #{actual_text}"
end

方法中的变化:expected_text、css、actual_text。

【问题讨论】:

  • 为什么要使用should方法?它是 rspec 示例还是什么?

标签: ruby watir-webdriver pageobjects page-object-gem


【解决方案1】:

在这种情况下,页面对象 gem 不会帮助您。

在您的情况下,我们不要谈论页面对象 gem。相反,让我们简单地使用通用术语“页面对象模式”,因为这是页面对象 gem 实现的。

PO 模式旨在在您的被测网页和您的测试代码之间创建一个抽象层。

在你的情况下,你有这样的陈述

actual_text = @browser.div(:class, css).text

PO 模式会将所有类似这样的隐秘语句放入一个称为“页面对象”的位置。发生这种情况时,您将创建用于与页面交互的方法,而不是进行直接(通常是重复且非描述性的)Selenium Web 驱动程序调用。这是对 PO 模式的过度简化,但我不打算在这里解释。

通过您创建的这些测试方法,您拥有一组非常简单且功能强大的测试,这些测试相当容易创建。因此,您可以快速创建它们,但您直观地意识到您正在重复自己,如果您将此测试套件扩展到甚至只有几百个测试用例,您将遇到重大的维护噩梦。

因此,您需要投资一些更完整的自动化框架来帮助您。例如,您可能会考虑使用 cucumber、rspec、capybara 或许多其他测试框架中的任何一个来帮助您在单独的位置管理测试数据并开始添加抽象和特定的责任区域,例如处理错误的类、可以将测试数据(CSV、XML 等)加载到您的测试用例中。

基本上,我开始写一篇关于如何创建自动化框架的操作指南文章(书),这超出了您的问题范围,正在进入意见等领域,即与stackoverflow的意图不兼容(一个问题/答案网站与一个论坛到这里讨论、分享意见等)

我建议您首先投资该领域。当您遇到关于 PO gem 的具体问题时,请发布一个新问题,我们会在这里! :-)

【讨论】:

    猜你喜欢
    • 2022-11-14
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    相关资源
    最近更新 更多