ruby - 将元素保存在 yml 文件中更好吗?

标签 ruby selenium-webdriver yaml

我正在使用 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'

tests/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 不是个好主意吗(如果不是的话)?

注意:

  1. 在上面的代码中,config['homepage']['something']是重复的代码。我会编写方法来避免重复。

最佳答案

是的,这绝对是有用的...当将来有 UI 更改时,它会将更改保持在最低限度。您始终只有一个地方可以编辑...是否有任何数据必须传递给您的代码?如何存储传递给测试的自动化数据。唯一的问题可能是你最终可能会得到太多难以跟踪的 yaml 文件......

关于ruby - 将元素保存在 yml 文件中更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19075117/

相关文章:

ruby-on-rails - 在 Ruby 中打开文件返回空文件

ruby-on-rails - 从零开始学习 Ruby 单元测试

amazon-web-services - YAML 解析器错误 : could not found expected : in <unicode string>

java - Selenium 3.7 : geckodriver : WebDriverException: org. apache.http.conn.HttpHostConnectException 连接被拒绝

json - 使用对象键作为 JSON 架构中的类型

kubernetes - helm chart : Include multiple lines from values. yaml 到 configmap

Ruby:我如何访问模块>模块>类中的方法

ruby-on-rails - spree 安装问题 - 使用 RVM

java - Selenium firefox 驱动程序需要 30-40 秒才能启动 firefox

Python Selenium 不能与 WebDriverWait 一起使用