5

分度器テストで try-catch ブロックを使用しようとしています。以下のコードを参照してください。

try {
    element(by.id('usernameas')).sendKeys(data);
}
catch(err) {
    console.log('error occured');
} 

私は故意に間違ったロケーターを渡して、catch ブロックに入るかどうかを確認しています。現在、catch ブロックに入るのではなく、NoSuchElementErrorコマンド プロンプトでエラーが発生し、テストの実行が停止します。

提案してください。

4

2 に答える 2

17

element(locator).sendKeys への呼び出しは、解決または拒否された promise を返します。promise は、テストの制御フローの一部です。

element(locator) 自体への呼び出しはエラーをスローしません。拒否されるのは promise です。シナリオを完了できないため、実際にはテスト全体を失敗させたい要素が見つからない場合。

エラー メッセージを取得するには、以下に示すように promise コールバックを使用できます。

重要な注意: promise の失敗を自分で処理する場合、テストは失敗しないため、再スローする必要があります。

try {
    element(by.id('usernameas')).sendKeys(data).then(function() {
        console.log('keys sent successfully');
    }, function(err) {
        console.error('error sending keys ' + err);
        throw err;
    });
}
catch(err) {
    console.log('error occured');
}

コンソール出力は (トリミングされています):

error sending keys NoSuchElementError: no such element
  (Session info: chrome=31.0.1650.63)
  (Driver info: chromedriver=2.8.241075,platform=Windows NT 6.1 S .....
于 2014-01-02T15:07:35.770 に答える