如何检查页面是否加载了正确的网址和标签标题

时间:2017-01-17 18:59:58

标签: selenium selenium-webdriver selenium-chromedriver assert

我写了一个加载页面导航链接的方法。该方法有效,但当我添加代码以检查正确的URL和标签标题时,我的测试不会执行。有时它会发生循环快速点击页面上没有加载的一面,我不知道这是否是一个问题,但我无法检查页面是否加载了正确的网址或标签标题,或者问题是我写的代码检查正确的网址或标签标题。

这是我的方法:

public void showNavigationLinks(){
    Actions action = new Actions(driver);

    String[] submenus = {"Accessories", "iMacs", "iPads" , "iPhones" , "iPods" , "MacBook"};

    for(int i=0;i<submenus.length;i++)
    {
        Assert.assertTrue(driver.getCurrentUrl().toLowerCase().contains(submenus[i]));
        Assert.assertTrue(driver.getTitle().contains(submenus[i]));

        WebElement we = driver.findElement(By.xpath("//a[contains(.,'Product Category')]"));
        wait(2000);
        action.moveToElement(we).moveToElement(driver.findElement(By.xpath("//a[contains(.,'"+submenus[i]+"')]"))).click().build().perform();
        wait(3000);
    }

    link_all_product.click();
}

这是我的错误:

Starting ChromeDriver 2.25.426923 (0390b88869384d6eb0d5d09729679f934aab9eed) on port 2140
Only local connections are allowed.
Jan 17, 2017 4:51:23 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
Jan 17, 2017 4:51:31 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS

java.lang.AssertionError
    at org.junit.Assert.fail(Assert.java:86)
    at org.junit.Assert.assertTrue(Assert.java:41)
    at org.junit.Assert.assertTrue(Assert.java:52)
    at PageObject.ProductPage.showNavigationLinks(ProductPage.java:620)

1 个答案:

答案 0 :(得分:1)

这不是错误,你的断言失败了!

您正在声明...toLowerCase().contains(submenus[i])。但是,submenus中的每个项目都包含大写字符!

您可以将断言更改为...toLowerCase().contains(submenus[i].toLowerCase())

接下来的问题是:driver.getCurrentUrl()中的您的网址是否确实包含<{>> submenus项目的每一个?我怀疑不会!将您的Assert更改为:

Assert.assertTrue("checking if URL contains: " + submenus[i],
    driver.getCurrentUrl().toLowerCase().contains(submenus[i].toLowerCase()));

通过这种方式,您可以准确了解Assert失败的确切时间和原因。