Как я могу получить текущий 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");
});

3 ответа

Решение

Вот рабочий код, основанный на примере, представленном автором ожидаемых условий:

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

Ответ, который я нашел, происходит от этого, у меня нет реальных кредитов для этого. Но на всякий случай это поможет.

Транспортир - общее ожидание изменения URL

Другие вопросы по тегам