2017-02-22 25 views
0
cell_elements = find_elements(:xpath, '//*/android.support.v7.widget.RecyclerView[1]/*') 
element = cell_elements[0] 
element.value.should eq 'something' 

上記のコードは、リストビュー内のすべての要素を返しますが、element.valueを解決するときにライン3に、それは次のメッセージで失敗します。Appium:xpathを使用して見つかった要素を使用できないのはなぜですか?

An element could not be located on the page using the given search parameters. (Selenium::WebDriver::Error::NoSuchElementError)

私にはそれがAppiumというどんな意味がありません要素を見つけることができますが、要素を使用しようとすると再び要素を見つけることができません。これはバグのようです。私もこれを試しました:

element = find_element(:xpath, "//*/android.support.v7.widget.RecyclerView[1]/android.widget.RelativeLayout[0]") 
element.value.should eq 'something' 

これは同じエラーで失敗します。

私はxpathと多くの経験がありませんので、何か間違っているのか、これをバグとして報告する必要があるのか​​尋ねたいだけです。

+0

'p cell_elements'の出力はどのように見えますか? 'cell_elements [0]'が配列/ハッシュである可能性はありますか?あるいは、 'cell_elements'は空の配列ですか? – 7stud

+0

'cell_elements [0]'が配列かハッシュの場合、 'element.value'はその例外を送出しません。 Appium要素だけがそれを行います。 –

+0

@ 7stud '#「 –

答えて

1

エラーメッセージは誤解を招くものであり、要素が存在しないことではなく、value属性を持っていません。

これは、要素のtextを取得することによって確認できます。

+0

」ドキュメントはそうでないと言う:http://www.rubydoc.info/gems/selenium-webdriver/0.0.28/Selenium/ WebDriver/Element。もちろん、opは次のようにそれをテストできます: 'puts element.respond_to? :value' – 7stud

+0

Erikのマシンでは、 'element.value'が' element.text'または 'element.click'が完全に機能している間にこれが行われることが確認されました。 – theheadofabroom

+0

もちろん、このバージョンのAndroid搭載Appiumにはこのコンテナタイプに固有のものがあるかもしれません。 – theheadofabroom

1
cell_elements = find_elements('//*/android.support.v7.widget.RecyclerView[1]/*', :xpath) 
element = cell_elements[0] 
element.value.should eq 'something' 

To me it doesn't make any sense that Appium is able to find the elements, but when trying to use one, it can't find it again.

エラーメッセージを少し慎重に読んだら、怠け者の評価があるかもしれないように思えます。最初の行は評価を必要としません。セレンは、「これらの要素をある時点で取得する必要があるかもしれませんが、まだではありません。

セカンドラインの場合と同様に、セレンは「最初の行に指定された要素を実際に取得するときに、最初の要素を返す必要があります」という追加の注釈を付け加えることができます。

セカンドラインでは、セレンは実際に評価を行う必要があります(そして、怠惰ではありません)。最初の要素の値は文字列 'something'と比較するために必要です。その時点でセレンは最初の行を評価する必要がありますが、指定された検索パラメータを使用して ""要素を見つけることができませんでした。

これは、あなたのxpathに何か問題があることを意味します。あなたが解析しようとしているものの構造を知らなければ、何が間違っているかを知ることは難しいです。ちなみに、//*/abc//abcに相当します。

セレンのドキュメントを見ると、find_elements()の引数が逆になっているようです。

+0

それは本当ですが、私はヘルパーメソッドを使っていましたが、引数を逆にしてオプションを作る方法でした。 –

関連する問題