如何使用量角器获取当前url

how can I get the current url using protractor?

本文关键字:url 获取 何使用 量角器      更新时间:2023-09-26

我正在使用量角器和jasmine测试一个网站。我想知道当前的网址,以便验证测试。

我试过

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");
});

如果只想检查当前URL,请使用browser.getCurrentUrl():

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

但是,如果您需要等待URL匹配某个值,请参阅答案的下一部分。


以下是基于预期条件作者提供的示例的工作代码:

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); 

Alecxe您的回答非常有帮助。

但你不能只是编码:

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

如果失败了,那么你就知道你去错地方了。

自从Protractor 4.0.0以来,您现在可以使用预期的条件来知道您的url何时更改。

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

我找到的asnwer来自这个,我没有真正的学分。但以防万一它会有所帮助。

Protractor-一般等待URL更改