how can I get the current url using protractor?
Solution 1
If you want to just check the current URL, then use browser.getCurrentUrl()
:
expect(browser.getCurrentUrl()).toEqual("expectedUrl");
But, if you need to wait until URL matches a certain value, see the next part of the answer.
Here is a working code based on the example provided by the author of the Expected Conditions:
var urlChanged = function(url) {
return function () {
return browser.getCurrentUrl().then(function(actualUrl) {
return url != actualUrl;
});
};
};
Usage:
element(by.linkText('Acceder')).click();
browser.wait(urlChanged("http://localhost:9000/#/solicitudes"), 5000);
Solution 2
Alecxe your answer was very helpful.
But couldn't you just code:
expect(browser.getCurrentUrl()).toEqual('whateverbrowseryouarexpectingtobein');
And if this fails, then you know you're going to the wrong place.
Solution 3
Since Protractor 4.0.0 you can now use expected conditions to know when your url changed.
const EC = protractor.ExpectedConditions;
browser.wait(EC.urlContains('my-url'), 5000);
The asnwer I found comes from this one, I have no real credits for it. But just in case it help.
Protractor- Generic wait for URL to change
lmiguelvargasf
I enjoy solving problems. I like math, science, philosophy and technology. LinkedIn
Updated on December 22, 2020Comments
-
lmiguelvargasf over 3 years
I am testing a website using protractor, and jasmine. I would like to know the current url in order to verify a test.
I have tried
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); }); }); } ); }
and I am using this function in this way
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"); });
-
Shotgun Ninja about 8 yearsI think the purpose was to wait until the URL matched a certain value, not just to get the value at the given point in time.
-
Brendan Martin about 6 yearsThis is the correct answer and a much more reliable way to check the URL.
-
Admin over 5 years+1 to this answer. The question is "how can I get the current url using protractor?". This is the first google result. I think this answer is more helpful even if it doesn't apply to OP.