首页 > 解决方案 > 获取打开的选项卡 Selenium/Java 的 URL

问题描述

我要测试的内容:转到网页,单击在新选项卡中打开的链接。确认新选项卡的 URL。

我在 Cucumber/Selenium/Java 中这样做。

这是我的小黄瓜

Scenario Outline: The HomePage tourism box links to the correct page

Given I navigate to the HomePage in <language>
When I click on the visit Tourism PEI Button
Then I am taken to the Tourism PEI landing page URL in a new tab

Examples:
  | language |
  | English  |
  | French   |

我点击链接的代码:

 @When("^I click on the Visit\\s" + pageElements + "$")
public void iClickFOnTheVisitTourismPEIButton(String element)  {
    pageModel.pageObject(element).click();
    progressObj.wait(1);
}

和代码我试图从新标签中获取 URL。我在这里挣扎。我尝试的所有操作都会打开一个新选项卡,然后屏幕变为空白并显示数据;在 URL 中,否则它将在已经打开的选项卡之上打开一个新选项卡。我知道我在这里并不真正走在正确的轨道上。这只是我尝试过的最后一件事。

@Then("^I am\\s*((?:not)?)\\staken to the Tourism PEI landing page URL in a new tab$")
public void iAmTakenToTheTourismPEILandingPageURLInANewTab() {

    WebDriver driver = new ChromeDriver();
    Actions action = new Actions(driver);
    action.keyDown(Keys.CONTROL).keyDown(Keys.SHIFT).sendKeys(Keys.TAB).build().perform();
}

我也试过这个

 String currentURL;

       currentURL = driver.getWebDriver().getCurrentUrl();
       if (currentURL.equalsIgnoreCase("https://www.tourismpei.com/")) {
           System.out.println("Matches" + currentURL);
       } else {
           System.out.println("Does not match" + currentURL);
       }

它采用原始 URL 而不是新标签...

标签: javaseleniumautomated-testscucumber

解决方案


for (String handle : driver.getWindowHandles()) {
    driver.switchTo().window(handle);
    System.out.println(String.format("handle: %s, url: %s", handle, driver.getWebDriver().getCurrentUrl()));
} 

推荐阅读