动态页面网址

Žel*_*pin 3 ruby watir-webdriver pageobjects page-object-gem

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

这就是我现在所做的检查我是否在正确的页面上。

这一页:

class ViewPostPage
  include PageObject

  def self.url
    "site.com/post/"
  end
end
Run Code Online (Sandbox Code Playgroud)

黄瓜步骤:

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

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

我正在使用最新的页面对象gem (0.6.6)。

更新

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

这一页:

class ViewPostPage
  include PageObject

  def self.url
    "site.com/post/"
  end
  page_url url
end
Run Code Online (Sandbox Code Playgroud)

黄瓜步骤:

visit ViewPostPage
Run Code Online (Sandbox Code Playgroud)

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

@browser.goto "#{ViewPostPage.url}#{@id}"
Run Code Online (Sandbox Code Playgroud)

如果有一种方法可以让页面知道它的 ID,那就太好了,但我还没有想出如何去做。

小智 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
Run Code Online (Sandbox Code Playgroud)

在你的测试中

on_page(ViewPostPage) do |page|
  page.navigate_to_post_with_id @id
  page.should have_expected_title
end
Run Code Online (Sandbox Code Playgroud)

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