web-dev-qa-db-ja.com

分度器を使用して現在のURLを取得するにはどうすればよいですか?

分度器とジャスミンを使用してウェブサイトをテストしています。テストを検証するために、現在のURLを知りたいです。

私が試してみました

function waitForUrlToChangeTo(urlRegex) {
    var currentUrl;

    return browser.getCurrentUrl().then(function storeCurrentUrl(url) {
            currentUrl = url;
        }
    ).then(function waitForUrlToChangeTo() {
            return browser.wait(function waitForUrlToChangeTo() {
                return browser.getCurrentUrl().then(function compareCurrentUrl(url) {
                    return urlRegex.test(url);
                });
            });
        }
    );
}

そして、私はこの方法でこの機能を使用しています

it('should log', function() {
    //element(by.model('user.username')).sendKeys('asd');
    //element(by.model('user.password')).sendKeys('asd');
    element(by.linkText('Acceder')).click();
    waitForUrlToChangeTo("http://localhost:9000/#/solicitudes");
});
30
lmiguelvargasf

現在のURLのみを確認する場合は、 browser.getCurrentUrl() を使用します。

expect(browser.getCurrentUrl()).toEqual("expectedUrl");

ただし、URLが特定の値に一致するまで待つ必要がある場合は、答えの次の部分を参照してください。


Expected Conditions の作成者が提供した例に基づいた作業コードは次のとおりです。

var urlChanged = function(url) {
  return function () {
    return browser.getCurrentUrl().then(function(actualUrl) {
      return url != actualUrl;
    });
  };
};

使用法:

element(by.linkText('Acceder')).click();
browser.wait(urlChanged("http://localhost:9000/#/solicitudes"), 5000); 
41
alecxe

Alecxe あなたの答えはとても役に立ちました。

しかし、単にコーディングすることはできませんでした:

 expect(browser.getCurrentUrl()).toEqual('whateverbrowseryouarexpectingtobein');

これが失敗した場合は、間違った場所に行っていることがわかります。

41
LucCW

Protractor 4.0. なので、URLがいつ変更されたかを知るために予想される条件を使用できるようになりました。

const EC = protractor.ExpectedConditions;
browser.wait(EC.urlContains('my-url'), 5000);

私が見つけた回答は this one に由来し、それに対する本当の信用はありません。しかし、万が一の場合に役立ちます。

分度器-URLが変更されるまでの一般的な待機

6
etiennejcharles