3

我有一个带有动态 URL 的页面。我们称之为查看帖子页面。帖子 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

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

我正在使用最新的页面对象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,那就太好了,但我还没有想出如何去做。

4

3 回答 3

5

您可以使用 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

让我知道这是否有帮助。

于 2012-05-09T19:33:24.870 回答
1

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

使用以下代码:

类 ViewPostPage

  include PageObject

      expected_url  "The expected URL"

  def initialize

     has_expected_url?

   end

结尾

它会帮助你

于 2013-10-04T09:25:11.713 回答
0

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

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

于 2012-05-09T14:47:59.140 回答