In protractor, globally available browser
object has two methods:
Returns the current absolute url f
GitHub source for getCurrentUrl
webdriver.WebDriver.prototype.getCurrentUrl = function() {
return this.schedule(
new webdriver.Command(webdriver.CommandName.GET_CURRENT_URL),
'WebDriver.getCurrentUrl()');
};
Uses the schedule()
-> command()
wrappers to resolve a promise from WebDriver.getCurrentUrl()
GitHub source for Protractor.getLocationAbsUrl
functions.getLocationAbsUrl = function(selector) {
var el = document.querySelector(selector);
if (angular.getTestability) {
return angular.getTestability(el).
getLocation();
}
return angular.element(el).injector().get('$location').absUrl();
};
Simply a wrapper around $location.absUrl()
with a wait for the AngularJS library to load
Current URL vs Absolute URL
given app URL:
http://www.example.com/home/index.html#/Home
Current URL resolves to more of a URI
/home/index.html#/Home
Absolute URL resolves to
http://www.example.com/home/index.html#/Home
When do you want to use absolute URL: You want to use the Full Domain URL, rather than the local navigation (URI), you want the Absolute URL.
If your application makes calls for the Current URL, your tests should call getCurrentUrl()
.
If your code makes requests for Absolute URL, your tests should call getLocationAbsUrl()
.