2017-02-16 9 views
0

チーム、にconsole.logはブラウザがURL

を起動する前に、私はtxtSearchのような変数として、要素宣言しています実行されている:要素(by.xpathを( '//入力[タイプ@ = "検索"]') )、これにconsole.logステートメントの前に、コンソールをログに記録され

clickOn(txtSearch)のようなファイル私は文をログに記録したいいくつかの時点で、私はスペックからこの関数を呼び出しています

var clickOn = function(webElement){ 
webElement.click(); 
console.log("Successfully clicked on the " + webElement); 
}; 

としてgつまり、最初にすべてのconsole.logステートメントが、URLが起動される前であっても最初に実行されています。

ノードバージョン:3.10.3 分度器バージョン:事前に4.0.3

おかげ

以下の必要な詳細情報を見つけてください。

+1

は、これは正常な動作です。すべてのコードは非同期で実行されます。 –

+0

nodejsを必ずアップグレードしてください。私は7バージョンを使用することをお勧めします。また、protractorjs 5.xはノードjsで動作しません<6 – Xotabu4

答えて

2

非同期の世界へようこそ!

すべては、あなたがしたいことを実行順序を作るために、非同期であるため、この試してみてください。クリックは、実際にブラウザ側で行われた場合にのみ、これは、コンソールログをスケジュールします

var clickOn = function(webElement){ 
    return webElement.click().then(()=> { 
     console.log("Successfully clicked on the " + webElement); 
    }); 
}; 

を。

しかし、私は強くwebdriverjsでの約束と制御フローについて読むことをお勧め: http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/promise.html

+2

また、私はこの回答を投稿したいと思いますが、彼はPromisesとES6のものをサポートしていないノード3.10.3を使用しています。このバージョンを入手する:D? –

+0

それは働いています。ありがとう@ Xotabu4 –

関連する問題