Nicole Phillips
Nicole Phillips

Reputation: 763

get the url of a new page when it is opened after click

I am writing a test that clicks on a button and opens a new tab and directs you to a new website. I want to call in that website value so I may parse it after the rfp code in the webpage name. I then open a decoder site and use it to decode and be sure the decoded webpage name works properly.

The code I'm using:

this.switchesToGetQuotePage = function() {
  browser.getAllWindowHandles().then(function(handles) {
    newWindowHandle = handles[1]; // this is your new window
    browser.switchTo().window(newWindowHandle).then(function() {
      getCurrentUrl.then(function(text) {
        console.log(text);
      });
    });
  });
};

When I call the getCurrentUrl function it returns below as the value:

data: ,

Upvotes: 0

Views: 119

Answers (1)

giri-sh
giri-sh

Reputation: 6962

Use the protractor built in getLocationAbsUrl() to get the url of the current page if its angular based. Here's how -

browser.getLocationAbsUrl().then(function(url){
    console.log(url);
});

However if you are working on a non-angular page then do wait until the page loads as the url changes (through redirections) until final page is delivered to the client and then use getCurrentUrl() on the page. Here's how -

   var ele = $("ELEMENT_ON_NEW_PAGE"); //replace it with your element on the page
   browser.switchTo().window(newWindowHandle).then(function() {
      browser.wait(protractor.ExpectedConditions.visibilityOf(ele), 10000).then(function(){
        getCurrentUrl.then(function(text) {
          console.log(text);
        });
      });
    });

Hope it helps.

Upvotes: 1

Related Questions