简体   繁体   中英

How to use browser.getCurrentUrl() in a protractor test?

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?

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM