2017-07-21 11 views
-1

私はこのフォームを記入しなければならず、すべてのフィールドが満たされ、ボタンをクリックしようとすると、カピバラがボタンや要素を見つけることができなかったというメッセージが表示されますが、見つけようとします。ボタンには名前やIDはありません。Capybara :: ElementNotFound:ボタンクラス= "btn btn - ハイライトng-binding"を見つけることができません

私はオンラインで見つけたものすべてを試しましたが、何も動作していないようです。これは私がブラウザ上でそれを点検し、ボタンのコードです:

<div class="button-set terms ng-scope"> 
 
    <button class="btn btn--highlight ng-binding" ng-disabled="shippingAddressForm.$invalid || (!shop.useSameAddress &amp;&amp; billingAddressForm.$invalid) || view.loading" ng-class="{ disabled: shippingAddressForm.$invalid || (!shop.useSameAddress &amp;&amp; billingAddressForm.$invalid), 
 
    loading: view.loading }" ng-click="shop.updateBothAddresses(view.shippingAddressModel, view.billingAddressModel)" style=""> 
 
    " Continuar " 
 
    <span class="spinner"></span> 
 
</button>

しかし、私はいつも、私は探してみてください何でも、それが見つからないというエラーが出ます。 、それを比較するので、先頭と末尾のスペースが取り除かれることになるとき - https://developer.mozilla.org/en-US/docs/Web/XPath/Functions/normalize-space - カピバラは、一般的にXPath関数normalize-spaceを使用してテキストコンテンツを正規化しているため

+1

を使用してを行っている可能性がXPathを使用してテキストを使用せずにボタンを見つけるには、あなたがしようとしたコードを表示します正確なエラーと一緒に見つけてください。 –

+0

** CODE:** '@ browser.click_button( 'Continuar')' **エラー:** 'Capybara :: ElementNotFound:ボタンを見つけることができませんでした。 ntinuar "' ** CODE:** '@ browser.find(:xpath、 '//button[@class="btn.btn--highlight.ng-binding"]') '。 **エラー:** 'Capybara :: ElementNotFound:xpathを見つけることができません" //ボタン[@class = \ "btn.btn - highlight.ng-binding \"] "' –

+0

ありがとうございます。将来、誰でも簡単に見つけたり読むことができるように、コメントにコメントを追加するのではなく、リクエストされたコードで質問を更新する必要があります。 –

答えて

0

あなたの最初の試みclick_button(' Continuar ')は動作しません。あなたは、XPathやCSSの構文を混合しているので

click_button('Continuar') 

を試してみてくださいあなたの第二の試みfind(:xpath, '//button[@class="btn.btn--highlight.ng-binding"]')は動作しません。あなたは

# Note the leading . on the XPath selector - see https://github.com/teamcapybara/capybara#beware-the-xpath--trap 
find(:xpath, './/button[@class="btn btn--highlight ng-binding"]').click # in XPath it's just the attribute value - there is no . shortcut for classes 

やCSS

find(:css, 'button.btn.btn--highlight.ng-binding').click # the first argument :css is optional if Capybara.default_selector has the default value of :css 

やカピバラボタンファインダー

find_button(class: %w(btn btn--highlight ng-binding)).click # or 
click_button(class: %w(btn btn--highlight ng-binding)) 
+0

これらの方法を試してみましたが、私が得た結果: ** 1。** click_button( 'Continuar')**エラー:** Capybara :: ElementNotFound:ボタン "Continuar"を見つけることができません ** 2。** find(:xpath、 '。クリック**エラー:** Capybara :: ElementNotFound:xpathを見つけることができません ".//button[@class=\"btn btn(* class =" btn btn - 強調ng-binding " - **ハイライトng-binding \ "]" ** 3. find_button(クラス:%w(btn btn - 強調ng-binding))。**エラー:**をクリックします。 Capybara :: ElementNotFound:クラス[btn、btn-highlight、ng-binding]でボタンnilを見つけることができません。 助けてくれてありがとう! –

+0

@MarianaFuriniそれで、そのボタンが実際にページにないか、ページに表示されないように聞こえます。 'page.html'を調べて実際のHTMLが何であるかを確認しましたか、' page.save_and_open_screenshot'を使ってページの実際の現在の状態を確認しましたか? –

+0

は、実際のhtml上にこのボタンに関連するものは何もないようです。しかし、これを試してみると@browserです。assert_text( 'Continuar'、:minimum => 1)は、 "Continuar"というテキストを見つけます。 –

関連する問題