2017-11-20 13 views
1

私は、次のコードを実行すると、私は要素を待ってタイムアウトを取得:フォースブラウザとwebdriverを

require 'watir' 
require 'webdrivers' 

browser = Watir::Browser.new 
browser.goto "http://watir.com/examples/forms_with_input_elements.html" 
browser.text_field(:id, "new_user_username").set("test") 

/home/.gem/ruby/2.4.1/ gems/watir-6.9.1/lib/watir/elements/element.rb:618: `raise_disabled ':要素が存在し、有効ですが、30分後にタイムアウトしました。 Watir :: TextField:located:真; {:ID => "new_user_username":タグ名=> "入力"}> (ワチール::例外:: ObjectDisabledException)

クロムウィンドウ開始無効にすることはないし、ロードしていないよう。起動後にウィンドウのサイズを変更してロードするように強制することはできますが、すべて正常に動作しますが、手動で処理する必要はありません。ブラウザを強制的に読み込む自動化された方法はありますか?

+0

これは奇妙です。私はそれが私のために働いていることを確認しました。 'Selenium :: WebDrivers.logger.level =:info'でそれを実行し、結果を要点に入れられますか?要素が見つからないようにして、ページが読み込まれていない場合は無効にしてください。私は、それが起こるためにワイヤーが何を呼んでいるのか見たいと思っています。実際には 'Watir.logger.level =:debug'もタックします。 – titusfortner

+0

トレースを追加して、ウィンドウのサイズを変更する前にトレースを1秒間実行させました。 https://gist.github.com/ryanesch/9b589035a1ac0abbd50794dad7219d21 – Ryan

答えて

2

ああ、対話可能なエラーです。彼らはすぐに事前に把握することはできません。何らかの理由で、クロムドライバーは、要素をテキストを入力できる場所に移動できるとは考えていません。

browser.window.maximizeまたはbrowser.window.move_to(x,y)を試すか、Alexの優れたwatir-scroll.gemを使用して、chromedriverが使用できるビューポート内に要素を配置できます。

+0

ありがとうございます!動きはうまくいかなかったようですが、最大化しています。私は後でwatir-scroll.gemを試してみる。 – Ryan