2017-07-12 11 views
0

このページは、フォームに入力する必要があります。すべてのフィールドが入力され、有効でボタンが有効な場合のみボタンをクリックしようとすると、カピバラがボタンや要素を見つけられなかったというメッセージが表示されますが、見つけようとします。 ボタンには名前やIDがありません。これにより難しくなります。ブラウザのサイズが変更、ボタンのテキストの変更は、しかし、デフォルトのサイズで、ボタンのテキストは「Jetzt bestellen」であるCapybaraはxpathやテキストでボタンをクリックできません。ボタンにIDや名前はありません

screenshot of the part of the code while inspecting element

<button class="btn btn--highlight _159vaYHuibqRdI3OZTALCW"> 
<!-- react-text: 182 --> 
Jetzt kaufen 
<!-- /react-text --> 
<!-- react-text: 183 --> — <!-- /react-text --> 
<!-- react-text: 184 --> 
94,01&nbsp;€ 
<!-- /react-text --> 
<span class="spinner"> 
</span></button> 

とするとき、より大きな「Jetzt kaufen」 ウェイズIすでにこのボタンをクリックしてみました:

@browser .click_button( 'Jetzt bestellen'、待つ:10)

@brows ER ".btn BTN - ハイライト" .withinはbrowser.click_on "Jetzt bestellen" 終了

@browser .find_button @ 行う( 'Jetzt bestellen' を待つ:10)

を.click @browser .findこれは角アプリをテストするとき、私はこの問題の回避得た方法である

+0

「Capybara.exact」は何時でもtrueに設定されていますか?そうでない場合は、現在のスコープの外にあるボタンです(つまり、ボタンを含まないブロック内にいるかどうか)。注: 'click_button'は' find_button(args ...)。click'として実装されていますので、3回目の試みは最初のものと変わらないことは驚きではありません。ボタンの内容が「Jetzt bestellen」以上であるため、4回目の試行はうまくいかないでしょう。あなたの質問に正確なエラーメッセージを追加してください。 –

+0

https://gist.github.com/twalpole/14cd6c69c91b3d54cf2bd994375a019bは、あなたが見せているHTMLを取り上げて文書に入れてからカピバラがそれをクリックしていることを示す要点です。あなたのテストが実行されるとき、テキストが "Jetzt bestellen"であることを確かめますか?あなたはhtmlで表示されている "Jetzt kaufen"ではありませんか? 'click_button( 'Jetzt')'を実行して、それが通過するかどうかを調べることができますか? –

答えて

0

.click(:10:XPathは、 '//ボタン[テキスト()= "Jetzt bestellenは"]'、待ちます)。彼らはHREFを持っていた場合は、リンクやボタン上のhrefいくつかのカピバラファインダなし

@browser.find('button', text: 'Jetzt bestellen').click 

は、彼らが希望のように動作しません。

+0

Capybaraのリンクでは、 'href'属性が必要です。また、click_linkに 'href:nil'オプションを指定することもできます。これは、html仕様ではhrefがない場合はリンクではなく、リンクプレースホルダだけであるためです。 'button '要素はCapybaraにはそのような要件がありません(ただ彼らは無効になっていないということです) –

関連する問題