2016-04-27 14 views
2

私はrpsecとwatir-webdriverで遊んでいますが、ボタンをクリックすると奇妙な問題が発生していますが、私はそのテキストと対話できません。内側のスパン。今、私のRubyのコードは次のようになりますRspecとWatir;ボタンの要素内にある<span>テキスト

<button class="pure-button toggle-mode button-link edit-text-button-element" data-reactid=".0.1.0.1.1.0.0.0.0" title="Edit"> 
    <span class="value false" data-reactid=".0.1.0.1.1.0.0.0.0.0">Untitled</span> 
    </span> 
</button> 

:これを実行する

foo = @browser.button(:class, 'pure-button toggle-mode button-link edit-text-button-element') 
foo.click 
foo.span.set('Hello') 

expected Hash or (:how, 'what'), got ["Hello"]
任意の考え、私がやっているものに私の最初のエラーを与える
これは、HTMLのように見えるものですここで間違っている?

答えて

2

解決策が見つかりました:要素とやりとりするためにクリックした後、send_keysを使用してテキストを設定できました。だから私はこれをした:

foo = @browser.button(:class, 'pure-button toggle-mode button-link edit-text-button-element') 
foo.click 
@browser.send_keys {keystrokes simulated here} 
+1

うん。入力型の要素だけが '.set'メソッドをサポートしています。したがって、これが標準でないカスタムコントロールの場合、sendキーを使用して、その要素にフォーカスを当てたユーザーの入力をエミュレートする必要があります。 –

0

classロケータは1つのクラスのみを受け入れます。

それはユニークDOであるためにあなたがクラスのすべてが必要な場合:

@browser.button(css: ".pure-button.toggle-mode.button-link.edit-text-button-element")

1

あなたはワチール-webdriverをスパンのテキストを設定することができないためです。少なくとも簡単に。しかし、あなたが例えば:

puts foo.span.text 

それは動作します。ここでは、スパンで何ができるかの完全なリストは、次のとおりです。もちろんUsefull Link

があなたのスパン内のテキストを変更する方法は次のとおりです。

browser.execute_script("arguments[0].textContent= 'Hello'", foo.span) 

しかし、それは本当になりますときに私は、状況を想像することはできません現実世界での実際のテストに必要です。

関連する問題