【问题标题】:Dynamic page URL动态页面网址
【发布时间】:2012-05-09 14:30:40
【问题描述】:

我有一个带有动态 URL 的页面。我们称之为查看帖子页面。 post 1 的 URL 是 site.com/post/1post 2 的 URL 是 site.com/post/2

这就是我目前所做的,以检查我是否在正确的页面上。

页面:

class ViewPostPage
  include PageObject

  def self.url
    "site.com/post/"
  end
end

黄瓜步:

on(ViewPostPage) do |page|
  @browser.url.should == "#{page.class.url}#{@id}"
end

有没有更好的方法?您甚至会检查整个 URL,还是只检查 site.com/post/ 部分?

我正在使用最新的page-object gem (0.6.6)。

更新

更大的问题是直接转到具有动态 URL 的页面。

页面:

class ViewPostPage
  include PageObject

  def self.url
    "site.com/post/"
  end
  page_url url
end

黄瓜步:

visit ViewPostPage

我现在要做的是将 Cucumber 步骤更改为:

@browser.goto "#{ViewPostPage.url}#{@id}"

如果有办法让页面知道它的 ID,那就太好了,但我还没有弄清楚怎么做。

【问题讨论】:

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


    【解决方案1】:

    您可以使用 current_url 方法获取页面的 url。在上面的测试中,您是否试图确定您是否在正确的页面上?如果是这种情况,我可能会建议使用两种“预期”方法之一——expected_title 和 expected_element。

    如果您需要动态导航到 url,page_url 方法很可能不是您的选择。您可能会尝试向您的页面添加一个执行以下操作的方法:

    class ViewPostPage
      include PageObject
    
      URL = "site.com/post/"
    
      expected_title  "The expected title"
    
      def navigate_to_post_with_id(id)
        navigate_to "#{URL}/#{id}"
      end
    
    end
    

    在你的测试中

    on_page(ViewPostPage) do |page|
      page.navigate_to_post_with_id @id
      page.should have_expected_title
    end
    

    如果这有帮助,请告诉我。

    【讨论】:

    • expected_titleexpected_element 没有帮助,因为我想检查 URL。
    【解决方案2】:

    在页面对象 gem 中有一个检查动态 URL 的选项。

    使用下面的代码:

    类 ViewPostPage

      include PageObject
    
          expected_url  "The expected URL"
    
      def initialize
    
         has_expected_url?
    
       end
    

    结束

    它会帮助你

    【讨论】:

      【解决方案3】:

      据我所知,#page_url 用于打开相应页面以及页面对象初始化。要验证您在正确的页面上,您可以尝试使用#expected_title 方法。

      另外,也许它对你有用。当符号传递给#page_url时,它会调用相应的方法,所以最好使用它。我还没有尝试过,但是这里有几个链接供您参考。

      【讨论】:

      • 我在检查 URL 时没有使用#page_url。我已将其从示例中删除,它是错误的。 #expected_title 会检查页面标题,对吗?我要查看网址。
      猜你喜欢
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      相关资源
      最近更新 更多