我有一个包含动态网址的网页。我们称之为查看帖子页面。 发布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会很棒,但我还没想出怎么做。
答案 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
时,它会调用相应的方法,因此最好使用它。我没试过,但这里有几个链接。