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は失敗していないようです。ログに例外はありません。また、getTagName
promiseに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
フレームワークは多くのクロージャーを使用しており、状態を効果的に検査することは非常に困難です。誰かがこの問題に精通していますか?