我如何验证网址正确

时间:2019-05-19 19:05:50

标签: java selenium selenium-webdriver selenium-chromedriver

我正在尝试单击一个链接,并确保打开的链接正确。 运行测试时,单击链接后,它将在新选项卡中打开。 新标签页已成为焦点,但比较仍在前一个标签页中。 有人吗?

这是我的代码:

HomePage homepage = PageFactory.initElements(driver, HomePage.class);
homepage.openHomePage();
homepage.openSignUpPage();
SignUpPage signUpPage = PageFactory.initElements(driver, SignUpPage.class);
signUpPage.checkTermsOfServiceURL();
driver.findElement(link_terms_of_services).click();    wait.until(ExpectedConditions.urlToBe("https://www.atlassian.com/legal/cloud-terms-of-service"));

这是结果:

等待url为“ https://www.atlassian.com/legal/cloud-terms-of-service”。当前网址:“ https://trello.com/signup

2 个答案:

答案 0 :(得分:0)

您需要将驱动程序切换到新选项卡,如下所示:

const windowHandles = await driver.getAllWindowHandles();
await driver.switchTo().window(windowHandles[1]);

然后,您可以等待该标签中的网址,如下所示:

await driver.wait(async () => {
    const currentURL = await driver.getCurrentUrl();
    return currentURL === url;
}, timeout);

答案 1 :(得分:0)

该错误消息明确指出驱动程序的当前焦点位于上一个窗口,而不是打开的新窗口。您可能会看到新窗口,但这并不意味着驱动程序也将焦点放在同一窗口上。 点击服务条款后,使用以下代码:

String MainWindow=driver.getWindowHandle();

Set<String> s1=driver.getWindowHandles();       
Iterator<String> i1=s1.iterator();              
        while(i1.hasNext())         
        {       
            String ChildWindow=i1.next();       

            if(!MainWindow.equalsIgnoreCase(ChildWindow))           
            {           

                    // Switching to Child window
                    driver.switchTo().window(ChildWindow);
                  // do your stuff
            }

您可以通过以下方式切换回父窗口:

            driver.switchTo().window(MainWindow);