2

page-object-gem を使用してチェックボックスをクリックできません。html コードは次のようになります。

<label class='cc pointer value-apple'>
 <input class='hidden' type='checkbox' value='apple'></input>
 <div style="background-image:url(/images/fruit-apple-3453452346.jpg)"><div>
</label>
<label class='cc pointer value-banana'>
 <input class='hidden' type='checkbox' value='banana'></input>
 <div style="background-image:url(/images/fruit-banana-2359235674.jpg)"><div>
</label>

watir-webdriver を使用すると、チェックボックスが非表示になっているため、ラベルまたは div をクリックしても問題はありません。それらは正常に動作します。ただし、これは page-object-gem を使用すると機能しないようです。私は次のことを試しました:

label(:select_fruit_apple, :class => /apple/)
on(FruitsPage).select_fruit_apple

div(:select_fruit_apple, :style => /apple/)
on(FruitsPage).select_fruit_apple

これを行う方法についての提案は大歓迎です。

4

1 に答える 1

0

Watir-Webdriver ではラベルまたは div をクリックする必要があるため、ページ オブジェクトでも同じ操作を行う必要があります。

label および div アクセサー メソッドは、要素をクリックするメソッドを作成しません。試したコードでは、 を呼び出すとselect_fruit_apple、ラベルまたは div 要素のテキストが返されるだけです。

ラベル (または div) をクリックするには、次のことを行う必要があります。

  1. label/div 要素を取得します。これは、 NestedElementを使用するメソッドを定義するか、label/div アクセサーを作成してメソッドを使用することで実行できます_element
  2. click要素のメソッドを呼び出します。これにより、Watir-Webdriver のクリック メソッドが呼び出されます。

NestedElement を直接使用した場合、クラスは次のようになります。

class MyPage
  include PageObject

  def select_fruit_apple()
    label_element(:class => 'value-apple').click  
  end
end

または、複数のものに対して label/div 要素が必要な場合は、それらのアクセサーを作成することをお勧めします。

class MyPage
  include PageObject

  label(:apple, :class => 'value-apple')
  def select_fruit_apple()
    apple_element.click
  end
end

次に、このメソッドを呼び出してチェックボックスを設定できます。

on(FruitsPage).select_fruit_apple    

もちろん、果物ごとにメソッドを定義する手間を省きたい場合は、パラメータを取るメソッドを使用できます。

class MyPage
  include PageObject

  def select_fruit(fruit)
    label_element(:class => 'value-' + fruit).click  
  end
end

次に、メソッド呼び出しは次のようになります。

on(FruitsPage).select_fruit('apple')
于 2013-12-18T22:21:45.230 に答える