2016-10-29 5 views
-2

Ruby on Rails、Cucumber、Capybaraの設定にXPathをはじめて導入しようとしています。私のコードは XPath数がRuby番号に変換されない

row_count_on_page = page.find(:xpath, "count(//table[@id='foo']/tbody/tr)") 

エラーコードの実際のXPath部分は、テーブルのボディに10行が正確があるため、正常に動作しているようだ

undefined method `map' for 10.0:Float 
Did you mean? tap (NoMethodError) 

が得られています。コードが10.0をRuby 10に変換することができないのを私は知りません。私は間違って何をしていますか?

+2

エラーをスローする実際のコード行を表示してください(ヒント: 'map'の呼び出しが含まれています)。 – mudasobwa

+0

私が表示しているコード行は私のコード行です。私は自分自身を 'map'と呼ぶことはありません。私は何かがそれを呼んでいることを理解していますが、それが何であれ、私は気づいていないところでそうしています。 – user3376010

+0

「[mcve]」をお読みください。最小限の実行可能なコードと最小限の入力HTMLおよび望ましい出力を含む問題を示す最小限の実行可能コードなど、より多くの情報が必要です。関連するHTMLを持たない1行のコードでは、私たちがあなたを助ける手助けをしません。私たちはHTMLを想像して、不正確な答えにつながなければなりません。 –

答えて

0

メソッド外でカウントを行う必要があります。有効なXPathではありません

row_count_on_page = page.find(:xpath, "10.0") 

:現在使用していると

row_count_on_page.count 

、検索の第二のメンバーが評価された後、あなたのような何かを持っています。

+0

XPathがそのまま動作しています。実際には、XPathに 'count'を含めなかったときの最初の試みから改善され、"あいまい一致 "があり、xpath(Capybara :: Ambiguous)エラーに一致する10個の要素が見つかりました。 – user3376010

+0

ブラウザで返された値を手動でチェックする必要があります。返り値がxpathセレクタが必要なため、数値が返されない場合はokです。最初の要素を見つけてすべての要素を見つける方法が異なる場合があります。最初の結果と他のすべての要素を持つ配列を返す必要があります.Xpathセレクタは、いくつかの要素を返す必要がありますカウントではなく、それは数値を返します。 – lauda

+0

ああ、あなたの答えを初めて読んだとき、私はあなたが意味することを誤解しました。私は 'row_count_on_page.count = page.find(...')を提案していると思っていましたが、今度はfindメソッドの後に 'count'を呼び出すことをお勧めしますが、私はあなたが言ったようにして解決しました。 「すべて」と。 – user3376010

関連する問題