如何使用 Ruby 中的 'page-object' gem 来测试 page_url 是否正确
How to test if page_url is correct using the 'page-object' gem in Ruby
这是我的小黄瓜的例子:
require 'watir-webdriver'
require 'page-object'
include PageObject::PageFactory
Given(/^user is on google home page$/) do
visit_page GoogleHome
end
When(/^user enters search criteria in google search bar$/) do
@browser.text_field(:name, "q").set "latest news"
end
Then(/^user is redirected to results page$/) do
on_page ResultPage do |page|
page.text.include? page.WEB_STRING
end
end
Given(/^user is on result page$/) do
visit_page ResultPage
end
When(/^user clicks on website link$/) do
on_page ResultPage do |page|
page.news_link
end
end
Then(/^user is redirected to website$/) do
on_page FoxNews do |page|
page_url.value?("http://www.foxnews.com/")
end
end
这是我的页面定义示例:
require 'page-object'
class FoxNews
include PageObject
page_url "http://www.foxnews.com/"
end
基本上,我想测试用户是否真的被重定向到示例新闻站点。代码运行顺利,但我的测试用例有问题。我试过 page_url.inlcude?
和 page_url.value?
.
一个页面对象有两个与获取相关的方法 URL:
page_url_value
- 这是 page_url
访问器中指定的 URL(即预期的 URL)。
current_url
- 这是浏览器当前的 URL.
要检查是否显示了正确的页面,那么您要检查current_url
。步骤为:
Then(/^user is redirected to website$/) do
on_page FoxNews do |page|
page.current_url == 'http://www.foxnews.com/'
end
end
不过,这一步总会过去的。我假设你真的想做一个断言:
Then(/^user is redirected to website$/) do
on_page FoxNews do |page|
expect(page.current_url).to eq('http://www.foxnews.com/')
end
end
除了在页面对象和测试中复制预期的 URL,您还可以使用 page_url_value
:
Then(/^user is redirected to website$/) do
on_page FoxNews do |page|
expect(page.current_url).to eq(page.page_url_value)
end
end
这是我的小黄瓜的例子:
require 'watir-webdriver'
require 'page-object'
include PageObject::PageFactory
Given(/^user is on google home page$/) do
visit_page GoogleHome
end
When(/^user enters search criteria in google search bar$/) do
@browser.text_field(:name, "q").set "latest news"
end
Then(/^user is redirected to results page$/) do
on_page ResultPage do |page|
page.text.include? page.WEB_STRING
end
end
Given(/^user is on result page$/) do
visit_page ResultPage
end
When(/^user clicks on website link$/) do
on_page ResultPage do |page|
page.news_link
end
end
Then(/^user is redirected to website$/) do
on_page FoxNews do |page|
page_url.value?("http://www.foxnews.com/")
end
end
这是我的页面定义示例:
require 'page-object'
class FoxNews
include PageObject
page_url "http://www.foxnews.com/"
end
基本上,我想测试用户是否真的被重定向到示例新闻站点。代码运行顺利,但我的测试用例有问题。我试过 page_url.inlcude?
和 page_url.value?
.
一个页面对象有两个与获取相关的方法 URL:
page_url_value
- 这是page_url
访问器中指定的 URL(即预期的 URL)。current_url
- 这是浏览器当前的 URL.
要检查是否显示了正确的页面,那么您要检查current_url
。步骤为:
Then(/^user is redirected to website$/) do
on_page FoxNews do |page|
page.current_url == 'http://www.foxnews.com/'
end
end
不过,这一步总会过去的。我假设你真的想做一个断言:
Then(/^user is redirected to website$/) do
on_page FoxNews do |page|
expect(page.current_url).to eq('http://www.foxnews.com/')
end
end
除了在页面对象和测试中复制预期的 URL,您还可以使用 page_url_value
:
Then(/^user is redirected to website$/) do
on_page FoxNews do |page|
expect(page.current_url).to eq(page.page_url_value)
end
end