I have been struggling with these lines of Protractor code today:
element(by.linkText("People")).click();
browser.waitForAngular();
var url = browser.getCurrentUrl();
...
It appears that getCurrentUrl
always fails when placed after a waitForAngular()
statement.
The error output is too vague:
UnknownError: javascript error: document unloaded while waiting for result
So, what is the correct way to click on a hyperlink and check the new url?
Here are my tests:
If I getCurrentUrl()
before the link is clicked,
it('can visit people page', function () {
var url = browser.getCurrentUrl();
element(by.linkText("People")).click();
expect(true).toBe(true);
});
The test will pass.
If I getCurrentUrl()
after the link is clicked,
it('can visit people page', function () {
var url = browser.getCurrentUrl();
element(by.linkText("People")).click();
expect(true).toBe(true);
url = browser.getCurrentUrl();
});
An error is thrown in Protractor with the UnknownError
output above. What went wrong?