1

このWatirWebdriverの問題を、IE8を使用するRuby1.9.2およびIE9を使用する1.9.3で複​​製しました。ChromeまたはFirefoxを使用している場合は発生しないようです。OSはWindows7(64ビット)です。

Watir Webdriverを使用して特定のリンクをクリックすると、アクションは正常に完了します(ブラウザーがリンクのhrefに移動するという点で)が、クリックイベントが永遠に発生し続けるように見えます。これは、リンクにマウスを合わせるとドロップダウンメニューが表示される場合に最も明白です。リンクをクリックした後、ブラウザを閉じるまでドロップダウンは表示されたままになります(もちろん、それを含むページを見ている場合)リンク)。

私にとっての本当の目玉は、これが発生すると、他のリンクをクリックできないことです。IEを通常の状態に戻す唯一の方法は、ブラウザを閉じてから再度開くことです。

例:

require 'rubygems'
require 'watir-webdriver'
include Watir
b=Browser.new :ie
# This produces the following output:
# Started InternetExplorerDriver server (64-bit)
# 2.28.0.0
# Listening on port 5555
# => #<Watir::Browser:0x..fe85636c0 url="http://localhost:5555/" title="WebDriver">

b.goto 'www.net-a-porter.com'
b.link(:text,'Designers').click

この時点で、IEは私が期待するページ(http://www.net-a-porter.com/Shop/AZDesigners)を表示しますが、Designersドロップダウンはまだ表示されているはずですが、表示されるべきではありません。元のリンクは引き続きIEのステータスバーに表示されます。

最初は、この特定のWebサイトのバグだと思っていましたが、次のコードを使用してyahoo.comでも同様のことが起こります。

b.goto 'www.yahoo.com'
b.link(:text,'Sport').click

Yahoo! スポーツページは読み込まれますが、ステータスバーでURLが点滅し続け、[サッカー]ドロップダウンメニューが表示されます。これが私が意味する埠頭を示すスクリーンショットです:

ナビゲーションが完了した後もドロップダウンが表示されていることを示すスクリーンショット

さて、そのスクリーンショットを撮るためにブラウザのサイズを変更すると、余白が減り、コンテンツが左にシフトして利用可能な小さなスペースに収まるように、さまざまなメニューが表示されることに気付きました。そのため、同じ場所で繰り返されるマウスの迷いクリックがあるようです。

これはおそらくWatirWebdriverまたはSeleniumのバグでしょうか?

これが私の宝石リストです:

  • アドレス可能(2.3.2)
  • ビルダー(3.1.4)
  • バンドラー(1.2.3)
  • 子プロセス(0.3.6)
  • coderay(1.0.8)
  • 列化(0.3.6)
  • commonwatir(4.0.0、2.0.4)
  • きゅうり(1.2.1)
  • デバッガー(1.2.3、1.2.2)
  • デバッガー-ラインキャッシュ(1.1.2)
  • デバッガー-ruby_core_source(1.1.6、1.1.5)
  • diff-lcs(1.1.3)
  • 異なる(0.1.2)
  • ffi(1.2.0 x86-mingw32)
  • ガーキン(2.11.5 x86-mingw32)
  • ハイライン(1.6.15)
  • くわ(3.4.0)
  • hpricot(0.8.6)
  • json(1.7.6、1.7.5)
  • libwebsocket(0.1.7.1)
  • ロガー(1.2.8)
  • method_source(0.8.1)
  • mini_magick(3.4、3.2.1)
  • ミニテスト(4.3.3、1.6.0)
  • multi_json(1.5.0)
  • mysql2(0.3.11 x86-mingw32)
  • のこぎり(1.5.6 x86-mingw32)
  • pg(0.14.1 x86-mingw32)
  • 詮索好き(0.9.10 i386-mingw32)
  • pry-doc(0.4.4)
  • レーキ(10.0.3、0.8.7)
  • 自動化(0.8.0、0.7.3、0.6.3)
  • rbx-require-relative(0.0.9)
  • rdoc(3.12、2.5.8)
  • rspec(2.12.0)
  • rspec-core(2.12.2)
  • rspec-期待値(2.12.1)
  • rspec-mocks(2.12.1、2.12.0)
  • rubygems-アップデート(1.8.24)
  • ルビージップ(0.9.9)
  • s4t-utils(1.0.4)
  • selenium-webdriver(2.27.2)
  • スロップ(3.3.3)
  • subexec(0.2.2、0.0.4)
  • ユーザーの選択(1.1.6.1)
  • watir(4.0.2 x86-mingw32、2.0.4)
  • watir-クラシック(3.3.0)
  • watir-webdriver(0.6.2)
  • websocket(1.0.6、1.0.5)
  • win32-api(1.4.8 x86-mingw32)
  • win32-プロセス(0.7.0)
  • win32console(1.3.2 x86-mingw32)
  • win32screenshot(1.0.7)
  • windows-api(0.4.2)
  • windows-pr(1.2.2)
  • xml-simple(1.1.2)
  • ヤード(0.8.3)
4

1 に答える 1

2

これはバグではなく、機能です。:)あなたが見ているのは、物理的なマウスカーソルがIEウィンドウの境界内にある場合にホバーが持続しないという問題を解決しようとするために、IEドライバーに導入されたハックの不幸な副作用です。

この問題を回避するには、2つの選択肢があります。どちらも、ドライバーを作成するときにドライバーに機能を設定する必要があります。まず、「enablePersistentHover」機能をfalseに設定することで、以前の動作に戻すことができます。これにより、説明したとおりにちらつきが止まります。次に、「nativeEvents」機能をfalseに設定することで、いわゆる「ネイティブイベント」の代わりにシミュレートされたJavaScriptマウスイベントを使用できます。明らかに、これらは相互に排他的なアプローチであり、一緒に使用するべきではありません。

于 2013-01-02T09:41:43.543 に答える