0

Cheezy の pageobject を使用して、フィールドセット内の select_list にアクセスしようとしています。

html の合計は投稿するには長すぎます (フィールドセットだけで 200 行をはるかに超えます) が、すべての id などを含む行を提供できます。

フィールドセット:

<fieldset class="dartPayer-Insurance" style="width: 730px;">

選択リスト:

<select id="dartPayer-Payer" style="width: 235px;">

私が使用しようとしているページオブジェクトの行:

select_list(:payer_insurance){ element(:class => "dartPayer-Insurance").select_list_element(:id => "dartPayer-PayerList") }

きゅうりのテストを実行しようとすると、次のエラーが表示されます。

 (eval):1: syntax error, unexpected '(', expecting $end
  {:id=>"dartPayer-Insurance"}(identifier)
                               ^ (SyntaxError)

このエラーは、次の行で select_list を設定しようとすると発生します。

self.send(field, input)  (Where field is "payer_insurance=" and input is "UMA")

この行は他のページでも機能するため、これが問題の一部ではないことは確かです。pageobject 行の単純な構文だと思いますが、私がしようとしているように pageobject を使用するためのドキュメントが見つかりません。私が見つけることができる唯一の参照は、私が尋ねた以前の質問の中にあります: Accessing a table within a table (Watir/PageObject)

誰かが私が間違ったことを教えてもらえますか?

よろしくお願いいたします。

更新:問題を再現する例:

次の html を含むページがあるとします。

<fieldset class="dartPayer-Insurance" style="width: 730px;">
    <select id="dartPayer-Payer" style="width: 235px;">
        <option value="UMA">UMA</option>
    </select>
</fieldset>

そして、次のように定義されたページ オブジェクト:

class MyPage
    include PageObject

    select_list(:payer_insurance){ element(:class => "dartPayer-Insurance").select_list_element(:id => "dartPayer-PayerList") }

    def input_payer(field, input)
        self.send(field, input)
    end
end

次のコードを実行します。

browser = Watir::Browser.new
browser.goto('C:\Scripts\Misc\Programming\PageObject\test.htm') 
page = MyPage.new(browser)

field = "payer_insurance="
input = "UMA"
page.input_payer(field, input)

次の例外を生成します。

C:/Ruby193/lib/ruby/gems/1.9.1/gems/page-object-0.9.0/lib/page-object/platforms/watir_webdriver/page_object.rb:968:in `instance_eval': (eval):1: syntax error, unexpected '(', expecting $end (SyntaxError)
{:class=>"dartPayer-Insurance"}(identifier)
                                ^
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/page-object-0.9.0/lib/page-object/platforms/watir_webdriver/page_object.rb:968:in `find_watir_element'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/page-object-0.9.0/lib/page-object/platforms/watir_webdriver/page_object.rb:907:in `element_for'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/page-object-0.9.0/lib/page-object/element_locators.rb:11:in `element'
from pageobject.rb:7:in `block in <class:MyPage>'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/page-object-0.9.0/lib/page-object.rb:379:in `instance_eval'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/page-object-0.9.0/lib/page-object.rb:379:in `call_block'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/page-object-0.9.0/lib/page-object/accessors.rb:1089:in `block in standard_methods'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/page-object-0.9.0/lib/page-object/accessors.rb:246:in `block in select_list'
from pageobject.rb:10:in `input_payer'
from pageobject.rb:25:in `<main>'
4

1 に答える 1

2

解決

選択リストに必要なアクセサーは次のとおりです。

select_list(:payer_insurance){ element(:fieldset, :class => "dartPayer-Insurance").select_list_element(:id => "dartPayer-Payer") }

問題

次の部分が原因で、構文エラーが発生していました。

element(:class => "dartPayer-Insurance")

API ドキュメントではelement、メソッド定義が次のようになっていることがわかります。

(Object) element(tag, identifier = {:index => 0})

Finds an element

Parameters:
    the (Symbol) — name of the tag for the element
    identifier (Hash) (defaults to: {:index => 0}) — how we find an element. You can use a multiple paramaters by combining of any of the following except xpath

元のコードにはtagパラメーターが欠落していたため、例外が発生しました。

選択リスト ID も間違っていることに注意してdartPayer-PayerListくださいdartPayer-Payer

于 2013-07-29T13:26:51.203 に答える