我正在使用 Selenium WebDriver 和 Ruby 编写自动化测试。所以,我正在考虑将元素保存在另一个文件中,将实际代码保存在另一个文件中。对于 Ruby,我发现yaml
gem 可以存储和访问数据。因此,我将元素存储在lib.yml
并测试代码test.rb
如下:
lib/lib.yml
homepage:
frame: 'mainPage'
email: 'loginPage-email'
password: 'loginPage-password'
login_button: 'btnLogin'
测试/test.rb
require 'selenium-webdriver'
require 'yaml'
driver = Selenium::WebDriver.for :firefox
driver.get 'http://www.abc.com'
config = YAML.load_file('./lib/lib.yml')
driver.switch_to.frame(config['homepage']['frame'])
email = driver.find_element(:id, config['homepage']['email'])
password = driver.find_element(:id, config['homepage']['password'])
email.clear
email.send_keys 'abc@gmail.com'
password.clear
password.send_keys 'password'
driver.find_element(:id, config['homepage']['login_button']).click
driver.quit
这样维护变得更容易。我只是想确定这样做是否是一个好方法。我问是因为我是第一次尝试这个,不知道如果我为更大的项目选择这个我会遇到什么困难。
我知道,使用 Page 对象模型,我们可以实现相同的目标。但我不知道 Page 对象。那么我应该避免使用yml
gem并直接使用page object
gem吗?
另外,有人可以解释一下如何使用yml
不是个好主意(如果不是的话)?
笔记:
- 在上面的代码中,
config['homepage']['something']
是重复的代码。我将编写方法以避免重复。