我一直在使用Ruby使用Selenium Webdriver来自动化Web应用程序。我遇到的情况是,登录页面对于不同的用户可能看起来有所不同。我如何开始自动化这样的页面?页面对象模型是否适用于这种情况?
感谢您的帮助。
谢谢
答案 0 :(得分:0)
所以,这就是我认为我将如何处理这种情况的方法,为了做出解释,我将做出一些假设来说明我的想法:
假设1:我有一个YAML,可以为所有用户存储凭据。
假设2:就本例而言,假设我正在使用黄瓜框架 Selenium / Ruby测试登录页面:https://github.com/cucumber/cucumber-ruby。
因此,我有一个Ruby类,它将包含pageObject gem,并且将具有所有不同的Login页面的URL和页面对象,例如:
class LoginPage
include PageObject
page_url_user_1 = someUrl for user1's login page
page_url_user_2 = someUrl for user2's login page
text_field(:user_1, name: 'username')
text_field(:pass_1, name: 'password')
button(:submit, css: '.submit-btn')
text_field(:user_2, name: 'username')
text_field(:pass_2, name: 'password')
button(:submit, css: '.submit-btn')
def submit_creds(user_1)
self.user_1 = GetCreds fro YAML
self.pass_1 = GetCreds fro YAML
self.submit
end
def navigate_to_Login_page(page_url_user_1)
@browser.navigate.to page_url_user_1
end
end
现在在“黄瓜”级别上,您具有以下功能步骤:
When I navigate to "page_url_user_1" login page
And I login as "User_1"
在“定义”步骤上,您可能只需要输入类似内容:
when(/^I navigate to "([^"]*)" login page do |user_login_url|
on(LoginPage).navigate_to_Login(user_login_url)
end
when(/^I login as a "([^"]*)" do |user_name|
on(LoginPage).submit_creds(user_name)
end
希望这可以帮助您入门。