2017-10-04 17 views
0

私のe2eテストの1つでは、現在のURLを取得し、取得するまでテストの実行を一時停止する必要があります。これは私の現在のコードです:値が設定されている前console.log()行が実行されますよう角度2は分度器e2eテストで現在のURLを取得します

let publicUrl; 
browser.wait(()=>{ 
    browser.getCurrentUrl().then((url)=>{ 
    publicUrl = url; 
    }) 
}); 
console.log(publicUrl); 

しかしpublicUrlは常に定義されていません。私はbrowser.wait()browser.getCurrentUrl()の多くの組み合わせを試してみたが、成功しません:

let publicUrl; 

browser.wait(()=>{ 
    return browser.getCurrentUrl() 
}).then((url) => { 
    publicUrl = url; 
}); 

console.log(publicUrl); 

私はこれが可能でなければならないかなり確信しているので、私は間違って何をやっているかわかりません。

答えて

0

.then()を使用するものはすべてasynchronous機能です。 console.log()とコード内の現在の位置はsynchronousです。つまり、.getCurrentUrl()が値を返す前に実行されることを意味します。あなたのコードは次のようにする必要があります:

let publicUrl; 
browser.wait(()=>{ 
    browser.getCurrentUrl().then((url)=>{ 
    publicUrl = url; 
    return console.log(publicUrl); 
    }); 
}); 

0

GoLGo13が正しいです。 あなたが知っていれば、あなたの予想されるURLをもう1行追加したいと思ったら、 あなたは特定のURLを待つことができます。

まず、公開URLに期待URLを定義します。

let publicUrl=yourExpectedUrl; 
browser.wait(()=>{ 
    browser.getCurrentUrl().then((url)=>{ 
    return url==publicUrl; 
    }) 
}); 
関連する問題