【问题标题】:How do we handle navigation between pages in a Page object Model test framework我们如何处理页面对象模型测试框架中页面之间的导航
【发布时间】:2015-12-15 11:08:56
【问题描述】:

我正在使用带有 ruby​​ 的 BDD Cucumber 框架来测试网站。我正在遵循页面对象模型模式。每个页面都有一个不同的类及其元素和功能,每个页面都有一个单独的功能文件,其中包含与该页面相关的场景。

我对 POM 结构很陌生,有一个疑问:

现在,如果我想要一个涉及从主页开始、浏览菜单/子菜单并最终到达网站的某个 Page1 的场景,我想通过 url 或标题。

  1. 我应该将这样的场景放在 home_page.feature 还是 page_1.feature 中?

  2. 如果我从 Home Page 开始,显然我的 @page 变量将与 Home Page 一起加载,所以我应该何时何地更改它 Page1,因为我需要 Page1 元素来验证最后一步(一个 url,标题或图片等,我在第 1 页)

  3. 人们通常如何使用 POM 框架围绕导航构建测试?

【问题讨论】:

    标签: ruby navigation cucumber bdd pageobjects


    【解决方案1】:

    我们创建了包含<MENU> 和子菜单链接的导航功能文件来回答您的第一个问题。

    //验证所有链接是否存在

       Feature : verify all submenu links 
        Given as user I logs in "http://stackoverflow.com/ 
        When I click on menu "<StackExchange>" 
        Then I able to see following submenu link"<Meta Stack Overflow,Stack overFlow Careers>"
    

    这是我们现在用于导航的结构构想

    • 每个页面都有一个类,页眉、页脚、右侧菜单有单独的类
    • 如果我在主页上单击而不是在主页上,则所有菜单都有预期的行为。每个菜单都返回预期对象,并使用该对象验证标题和预期元素。在这里,当我单击主页链接时,它将返回 HomePagePOM.class 并使用此对象我可以验证页面

    • 在 Navigation 类中,它将包含所有菜单和子菜单并返回预期的对象。

    【讨论】:

      【解决方案2】:

      您可以通过页面名称和值来浏览页面,不同的值可能意味着不同的页面。

      # Given I am on page users board
      Given /^I am on page ?(.+)?$/ do |page_name|
        case page_name
        when 'homepage'
          visit root_path
        when 'users board'
          visit users_path
        when 'products board'
          visit product_path
        else
          raise "Missing mapping for '#{page_name}' page."
        end
      end
      

      如果未定义页面名称,它将引发Missing mapping for '#{page_name}' page. 异常。

      在此article 中查找使用黄瓜测试的其他方法。

      【讨论】:

        猜你喜欢
        • 2016-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-22
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        相关资源
        最近更新 更多