我正在使用页面对象处理WATIR。在这里,我们需要在.rb
示例
order_page.rb
此页面的网址为https://www.test-xyz.com/order/123123,此页面的最后数字始终会更改。
现在如何为此页面文件创建一个页面对象,以便我可以使用:
on(OrderPage).continue_shopping
答案 0 :(得分:2)
仅在使用PageFactory page_url
方法时才需要visit
访问器方法。使用on
方法时不使用它。
鉴于您只想调用on
方法,只需从页面对象中删除page_url
访问者:
require 'watir-webdriver'
require 'page-object'
include PageObject::PageFactory
class OrderPage
include PageObject
link(:continue_shopping, :text => 'Continue Shopping')
end
@browser = Watir::Browser.new :chrome
@browser.goto('path\to\page\test.htm')
on(OrderPage).continue_shopping
如果您确实要指定page_url
以便visit
,则可以指定由ERB评估的动态URL。例如,您将页面对象定义为:
class OrderPage
include PageObject
page_url "https://www.test-xyz.com/order/<%=params[:id]%>"
link(:continue_shopping, :text => 'Continue Shopping')
end
使用此页面对象,您仍然可以像以前一样调用on
方法:
on(OrderPage).continue_shopping
这也使您能够在知道URL的动态部分时直接访问页面:
visit OrderPage, :using_params => {:id => '123123'} do |page|
page.continue_shopping
end
在我的博客文章“Creating page objects with a dynamic page_url”上指定动态网址时,还有一些细节/技巧。
答案 1 :(得分:0)
使用页面对象gem时,您不必使用页面网址。只有在必须直接导航到该页面时才有意义。如果您已经在页面上,那么您可以执行您的方法。
如果您确实需要导航到该页面,并且在运行时之前不知道该网址,您可以定义一种方法,该方法可以获取您不知道的网址部分直到运行时并导航到页。
def navigate_to_order_page(order_number)
@browser.goto("https://www.test-xyz.com/order/#{order_number}")
end
然后,当您想要转到该页面时,只需调用该方法。