3

メソッドを使用して公開 Web サイトでマウス オーバーを起動しようとしています.hoverが、Chrome でしか機能しないようです。他のブラウザでは、エラーが発生するか、情報が表示されません。

Watir.fire_event.execute_script内部 Javascript などの代替方法を試しましたが、どちらも Firefox と IE で失敗しました。Watir Classic でも同様の結果が得られます。

Watir の構文の問題なのか、ブラウザー固有の構文の問題なのか、サポートされていないブラウザーのバージョンの問題なのかわかりません。

require "rubygems"
require "watir-webdriver"

BROWSER = Watir::Browser.new :chrome
BROWSER.goto("http://france.meteofrance.com/")
sleep 10 # wait until flash ads are closed
BROWSER.a(:class, "p593500Content").when_present.hover # works, on Chrome only
puts BROWSER.div(:id, "p593500Content").style # position of div after a.hover: left: 249px; top: 223px;

# Chrome - OK, tooltip displayed
# Firefox 7 to 19 - KO: d is undefined in driver_component.js (sometimes l. 7024, or l. 8587)
# IE8, IE9 - KO (maybe OK with IE7): 'unable to locate element, using {:class=>"p593500Content", :tag_name=>"a"}', nothing occurs

Ruby のバージョンと Gem リスト:

ruby 1.9.3p392 (2013-02-22) [i386-mingw32]

bigdecimal (1.1.0)                  rspec-expectations (2.13.0)
builder (3.2.0)                     rubyzip (0.9.9)
childprocess (0.3.9)                s4t-utils (1.0.4)
commonwatir (4.0.0)                 selenium-webdriver (2.31.0)
cucumber (1.2.3)                    subexec (0.2.2)
diff-lcs (1.2.1)                    user-choices (1.1.6.1)
ffi (1.6.0 x86-mingw32)             watir (4.0.2 x86-mingw32)
gherkin (2.11.6 x86-mingw32)        watir-classic (3.6.0)
hoe (3.5.2)                         watir-page-helper (1.0.3)
io-console (0.3)                    watir-webdriver (0.6.2)
json (1.7.7, 1.5.5)                 websocket (1.0.7)
mini_magick (3.5.0)                 win32-api (1.4.8 x86-mingw32)
minitest (2.5.1)                    win32-process (0.7.1)
multi_json (1.7.2)                  win32screenshot (1.0.8)
nokogiri (1.5.7.rc3 x86-mingw32)    windows-api (0.4.2)
rake (0.9.2.2)                      windows-pr (1.2.2)
rautomation (0.8.0)                 xml-simple (1.1.2)
rdoc (3.9.5)
4

1 に答える 1

0

IE で表示されているエラーは、ホバーしようとする前に発生します。ホバーしたいものが見つからないと言っています。したがって、なぜそれが起こっているのかを理解する必要があります。

いくつかの潜在的な原因:

  • これらのブラウザー (またはブラウザー) を実行しているシステムは十分に遅いため、要素がまだレンダリングされていません (多くの場合、クライアント側の JavaScript または ajax タイプのアクションによって)。
  • HTML が異なり、アイテムの属性が異なります。(ちなみに、少なくともIE8でそのサイトを見ることに基づいていない場合、それは問題ではないようです)
  • HTML が異なり、アイテムがフレーム内にある
  • その瞬間にDOMへのアクセスを妨げる何か他のことが起こっています。たとえば、ブラウザがフラッシュや何らかのプラグインなどのインストールを求めているようなモーダルがあるかもしれません。
  • ブラウザ設定の何かが要素のレンダリングを妨げています

when_present アクションのタイムアウトを延長して、より多くの時間を与えることをお試しください。

潜在的なトラブルシューティングの手順は、その行の前に数回スリープし、たとえば 10 秒間隔でいくつかのスクリーンショットをスナップすることです。これにより、ブラウザがその時点でレンダリングしたものを (少なくとも視覚的に) 確認できます。 Nord-Pas-de-Calais レンダリング?. モーダル ポップアップまたはその他のブラウザ警告はありますか?

FF の問題は、エラーに基づいてまったく異なるように見えます。これは、webdriver の問題のようです。

于 2013-04-05T16:19:44.283 に答える