如何使用量角器获取当前网址?

lmi*_*asf 30 javascript testing url angularjs protractor

我正在使用量角器和茉莉花来测试一个网站.我想知道当前的网址,以验证测试.

我试过了

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);
                });
            });
        }
    );
}
Run Code Online (Sandbox Code Playgroud)

我正在以这种方式使用这个功能

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");
});
Run Code Online (Sandbox Code Playgroud)

ale*_*cxe 41

如果您只想查看当前的网址,请使用browser.getCurrentUrl():

expect(browser.getCurrentUrl()).toEqual("expectedUrl");
Run Code Online (Sandbox Code Playgroud)

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


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

var urlChanged = function(url) {
  return function () {
    return browser.getCurrentUrl().then(function(actualUrl) {
      return url != actualUrl;
    });
  };
};
Run Code Online (Sandbox Code Playgroud)

用法:

element(by.linkText('Acceder')).click();
browser.wait(urlChanged("http://localhost:9000/#/solicitudes"), 5000); 
Run Code Online (Sandbox Code Playgroud)


Luc*_*cCW 41

Alecxe你的回答非常有帮助.

但你不能只编码:

 expect(browser.getCurrentUrl()).toEqual('whateverbrowseryouarexpectingtobein');
Run Code Online (Sandbox Code Playgroud)

如果这失败了,那么你就知道你会去错误的地方.


eti*_*les 8

Protractor 4.0.0开始,您现在可以使用预期条件来了解您的网址何时更改.

const EC = protractor.ExpectedConditions;
browser.wait(EC.urlContains('my-url'), 5000);
Run Code Online (Sandbox Code Playgroud)

我找到的asnwer来自这个,我没有真正的功劳.但以防万一它有所帮助.

Protractor- Generic等待URL改变

  • 这是正确的答案,也是检查 URL 的更可靠的方法。 (2认同)