私の分度器テストでは、現在ログインしているユーザーのすべてのデータをリセットするエンドポイントにヒットしようとしています。今、普通の古いjavascriptを使ってbeforeAll
でそのエンドポイントをヒットしていますが、正常にヒットしていますが、ページがリフレッシュされる前にテストが実行されているため、エラーが発生します。ここに私の現在のコードです:分度器HTTP GET要求
var EC = protractor.ExpectedConditions,
el = element(by.css('body div.modal-x'));
browser.executeAsyncScript(function() {
var inj = angular.element(document.body).injector();
var reHTTP = inj.get('reHTTP');
var myService = inj.get('myService');
var someVar = myService.getCurrent().definition.userName;
console.log(someVar); // works
reHTTP.get('/app/' + someVar + '/reset').then(function() {
// console.log('i am here'); // this works
// alert('Success!'); // this works
return browser.wait(EC.visibilityOf(el)); // this does not work
});
});
問題:私は今、ブラウザのコンテキストでだから私はそのexecuteScriptブロック内分度器機能を使用することはできません。はどのように適切にも(再び、私は現在beforeAll
ブロックでは、この機能を使用しています)このエンドポイントを叩きながら、私のExpectedConditions
を使用/アクセスできます。すなわちEC
は未定義
質問ありますか?
注意すべきいくつかのこと:
- 私は
browser.executeAsyncScript
を使用しない場合は、angular
が定義されていないと私はサービスにアクセスすることはできません(または私は別の方法を見つけることができませんでした) executeScript
を使用して(AsyncScriptではなく)は、非同期スクリプトよりも高速に失敗します
アイデアはありますか?
ワウありがとう!それはとてもシンプルでしたが、何らかの理由で私は自分自身をコールバックと混同していました。私は質問を投稿する前に試してみましたが、正しく実装してはいけません... reHTTPが高次のものを呼び出すために自分のコールバックを必要とするのであれば混乱していたと思います。再度、感謝します。 – Gunderson