ラジオ ボタンで選択されたオプションのリストを含むページを持つサイトを自動化しています。ラジオの 1 つを選択すると、テキスト フィールドと選択リストが表示されます。
テスト (ruby test_contracting.rb) を実行するファイル (test_contracting.rb) と、ページを表す他のクラスを作成しました。
私のクラス ContractPage には、次の要素宣言があります。
checkbox(:option_sub_domain, :id => "option_sub_domain")
text_field(:domain, :id => "domain_text")
select_list(:tld, :id => "domain_tld")
ContractPage で、ドメインの構成を次のように設定するメソッドを作成しました。
def configure_domain(config={})
check_option_sub_domain
domain = config[:domain]
tld = config[:tld]
end
test_contracting.rb から configure_domain メソッドを呼び出すと、ラジオ ボタンが選択されますが、フィールドに値が入力されません。パラメータはメソッドに正しく取り込まれています。「puts」を使用して確認しました。パラメータを「bla」のような一般的な文字列に変更しても機能しません。厄介な点は、test_contracting.rb でまったく同じコンポーネントを呼び出すと、機能することです。
my_page_instance = ContractPage.new(browser)
my_page_instance.domain = "bla"
my_page_instance.tld = ".com"
私がうまくいったのは、configure_domain メソッドで以下を実装することでした。
domain_element.value = config[:domain]
tld_element.send_keys config[:locaweb_domain]
その後、うまくいきました。
私が参照として使用している PageObjects モジュールのドキュメントは、 http ://rubydoc.info/github/cheezy/page-object/master/PageObject/Accessors#select_list-instance_method にあります。
オブジェクトの値を設定するためにページオブジェクトによって自動生成されたメソッドがこのスコープ/コンテキストで機能しなかった理由について説明がありますか?
ちなみに、友人が Java で同じことを試みましたが、同様に失敗しました。