动态页面URL

时间:2012-05-09 14:30:41

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

我有一个包含动态网址的网页。我们称之为查看帖子页面。 发布1 的网址为site.com/post/1发布2 的网址为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

有更好的方法吗?您是否还在费心检查整个网址,或仅查看site.com/post/部分?

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

更新

更大的问题是直接进入具有动态网址的网页。

页面:

class ViewPostPage
  include PageObject

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

黄瓜步骤:

visit ViewPostPage

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

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

如果有一种方法让页面知道它的ID会很棒,但我还没想出怎么做。

3 个答案:

答案 0 :(得分:4)

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

如果您需要动态导航到网址,则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

如果有帮助,请告诉我。

答案 1 :(得分:1)

可以选择检查Page Object gem中的动态URL。

使用以下代码:

  

类ViewPostPage

  include PageObject

      expected_url  "The expected URL"

  def initialize

     has_expected_url?

   end
     

它会帮助你

答案 2 :(得分:0)

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

此外,也许它对你有用。当符号传递给#page_url时,它会调用相应的方法,因此最好使用它。我没试过,但这里有几个链接。