5

webdriverjsを実行していますが、webdriverがアイドル状態になり、イベントの実行を停止しているように見えるという問題があります。Webdriverを使用して新しいブラウザーを起動すると、そのブラウザーのコードがWebDriverセッションに接続し、テストコマンドを実行します。

これは正常に機能しているように見えますが、コマンドのシーケンスによっては、Webドライバーが停止するだけです。たとえば、私のテストでは:

driver.findElement(my_element).then(function(element) {
  console.info("found");
  element.getTagName().then(function(name) {
    console.info("got tag name", name);
  });
});

ブラウザは最初の「見つかった」ログ行を出力しますが、2番目の「タグ名を取得」は出力しません。Webdriverは失敗していないようです。ログに例外はありません。また、getTagNamepromiseにerrbackを登録しても、呼び出されることはありません。それは単に起こりません。

webdriverインスタンスはselenium-standalone-serverです。そのログを見ると、最初のfindElementリクエストがあります。

12:59:43.382 INFO - Executing: [execute script: return (function lookupElement(id) {
  var store = document["$webdriver$"];
  if(!store) {
    return null
  }
  var element = store[id];
  if(!element || element[id] !== id) {
    return[]
  }
  return[element]
}).apply(null, arguments);, [51d37tw]] at URL: /session/1337200865492/execute)
12:59:43.393 INFO - Done: /session/1337200865492/execute

しかし、2番目のリクエストは表示されないため、webriverJSがサーバーを呼び出すことは決してないようです。

Webドライバーのコードをステップ実行して何が起こっているかを確認していますが、promiseフレームワークは多くのクロージャーを使用しており、状態を効果的に検査することは非常に困難です。誰かがこの問題に精通していますか?

4

1 に答える 1

2

これはWebdriverJSのバグであり、セレンチームによって認識および修正されています。http://code.google.com/p/selenium/issues/detail?id=3930を参照してください

于 2012-05-21T21:16:04.360 に答える