2017-10-04 9 views
0

何か私は私のカピバラ環境で、次の問題が生じていますを含む属性によって要素を検索します。この要素には一意の属性が含まれています。属性は非同期に変更されます。 私はこの属性の内容が必要ですが、属性を検索するときにはゼロを得ています。属性は、プロパティを持っているが、これはカピバラジョブであることから、私のようなものを検索することができる可能セレクタ、があるかもしれないと思ったまで、私は待つことができるカピバラ:私は要素を検索する必要が</p> <p>:NOT

find('button[uniqueattribute] != nil') 

任意のアイデアこれを行う方法?

ありがとうございました!

答えて

0

属性がbutton要素に追加されている場合は、(元々の属性を持っていなかった)その後、あなただけで、ボタン要素のCapybara.max_default_wait_time秒まで(お待ちしております

find('button[attribute_name]') 

を行うことができますページ上にあるように、その属性 - https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectorsあなただけの属性がないかそこか空白になるまで待ちたい場合は待機し、その属性の内容/値を取得するには、あなたが

find('button[attribute_name]')['attribute_name'] 

を行うことができ、あなた。できます

find('button:not([attribute_name=""])') 

あなたが属性を確保する必要がある場合があるが、それは

find('button[attribute_name]:not([attribute_name=""])') 
+0

その見栄えは良いですが、残念なことに私の場合、属性はすでにロードされているが空の場合に要素に既に添付されているようです。非同期的に、それは私が知らないコンテンツで更新されるので、空でなければならないコンテンツを検索することはできません。 – MJohnyJ

+0

@MJohnyJ属性が既に空白の場合、CSS経由で更新します。 –

+0

それは素晴らしい仕事、最後のものは私のためにそれをやった。すごくかっこいい! – MJohnyJ

0

だろうブランクではない、私は可能な解決策を見つけた: あなたは、XPathで要素の長さを確認することができます(それは文字列の長さで素晴らしいです)。 だから、解決策だった私の場合:属性の値になるまで

find(:xpath, ".//button[@unique_attribute_name[string-length() != 0]]") 

今カピバラが待機します。もっと良い解決策がある場合は、教えてください。

+0

あなたが表示するXPathは有効なXPathではありません(XPathでは属性名の前に@が付いていますので、どのように動作するかわかりません)また、CapybaraでXPathを使用する場合は、/- そうでなければ、すべてのスコープを敗北させる - https://github.com/teamcapybara/capybara#beware-the-xpath--trap。だから './/button[string-length(@unique_attribute_name)!= 0] 'はより良いと法的なXPath –

+0

私はコピーして貼っていない、私に恥とあなたに感謝。 私の答えを修正しました。 xpathトラップのヒントありがとう! – MJohnyJ

関連する問題