Ž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)
如果这有帮助,请告诉我。