私はWatir-webdriver 0.5.3を使用しています。watir-webdriverを使用して断続的な「要素はDOMに接続されなくなりました」
while $browser.div(:class => /^expander$/).exists?
$browser.div(:class => /^expander$/).click; sleep 1.5
end
クリックは、TreeViewコントロールを拡大し、それがクリックされたのdivのクラスを変更し実行するためにいくつかのjavascriptの原因:前0.4.x年頃のバージョンでは、このトラブルはなかったです。このスクリプトの目的は、拡張されていないものがなくなるまでノードを拡張し続けることです。
私は頻繁にを取得しています。「DOMに要素が追加されなくなりました」.existsの?行です。これはespです。私が.exists?
を広範囲に使用し始めた理由は、最初にスクリプトを直ちにクラッシュさせるようなエラーを避けるためでした。
視覚的に私はすぐに.clickの後に展開を観察し、私はそこで一時停止すると、Firebugはclass = 'expander'だけのdivがclassの代わりにdivで置換されたことを確認します= 'expander hasChildren expanded'、およびそのdivのみ。
webdriverからエラーが発生しているようです。
他に誰かがこの問題を抱えていたか回避策を推奨していますか?
earlier questionでは、新しいwatir-webdriver
の動作が変更された後、そのクラスと完全に一致するように/^expander$/
フォームに切り替える必要がありました。
私は、ある種のAJAX/Javascriptによって更新された後、 '.exists? 'のDOMの新しいバージョンが表示されない、あるいは要素タイプとタグの検索で全く機能しないと思っています私はよく使う。 – Marcos
domがまだ更新している間に、テストがブラウザにアクセスしている何らかの競合状態のように聞こえます。あなたが進める前に探すことができる、「作成された」新しいオブジェクトがありますか?あなたはおそらく何人の 'expander hasChildren' divを数え続けて、最新のものが現れるまで待つべきでしょうか? –
私は '$ browser.driver.manage().timouts()。implicit_wait = 10'のようなことをやってみました。この種の問題は私がワイアを使い始めて以来私を悩ませてきました。私のコードが動くように、DOMを再読み込みするように強制する方法はありますか? (または私は 'send_keys ESC'を前に試したと思うが、ブラウザのDOMの更新を中断して再読み込みする) – Marcos