Ruby で Selenium WebDriver を使用して自動テストを作成しています。そこで、要素を別のファイルに、実際のコードを別のファイルに保持しようと考えています。そして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 オブジェクトについて知りません。では、gem の使用を避けてyml
直接 gem を使用する必要がありpage object
ますか?
また、誰かがどのように使用yml
するのが良い考えではないかを説明できますか (そうでない場合)?
ノート:
- 上記のコードで
config['homepage']['something']
は、繰り返しコードです。そのための繰り返しを避ける方法を書きます。