admin管理员组文章数量:1225001
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?
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?
2 Answers
Reset to default 11Instead of waitForAngular()
call, wait for the URL to change:
browser.wait(function() {
return browser.getCurrentUrl().then(function(url) {
return /index/.test(url);
});
}, 10000, "URL hasn't changed");
Originally suggested by @juliemr at UnknownError: javascript error: document unloaded while waiting for result.
This piece of code works correctly
var handlePromise = browser.driver.getAllWindowHandles();
handlePromise.then(function (handles) {
// parentHandle = handles[0];
var popUpHandle = handles[1];
// Change to new handle
browser.driver.switchTo().window(popUpHandle).then(function() {
return browser.getCurrentUrl().then(function(url) {
console.log("URL= "+ url);
});
})
});
本文标签: javascriptHow to use browsergetCurrentUrl() in a protractor testStack Overflow
版权声明:本文标题:javascript - How to use browser.getCurrentUrl() in a protractor test? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1739419558a2162450.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
expect( browser.getCurrentUrl() ).toContain( "contact-us" );
JK, I see it's commented out. – Christopher Marshall Commented Mar 18, 2015 at 18:04browser.getCurrentUrl
breaks the test! – Blaise Commented Mar 18, 2015 at 18:06browser.sleep(2000)
then trying yourexpect
block after your link click? – Christopher Marshall Commented Mar 18, 2015 at 18:08sleep
? Willbrowser.waitForAngular()
do the delay? – Blaise Commented Mar 18, 2015 at 18:10