Selenium(Java),java.lang.AssertionError

时间:2017-01-18 21:09:19

标签: java selenium selenium-webdriver selenium-chromedriver

我写了一个加载页面导航链接的方法。该方法有效,但当我添加代码以检查正确的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++)
        {

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

            waitForElementToBeDisplayed(driver.findElement(By.xpath("//a[contains(.,'"+submenus[i]+"')]")) , 500);
            Assert.assertTrue(driver.getCurrentUrl().toLowerCase().contains(submenus[i]));

            Assert.assertTrue(driver.getTitle().contains(submenus[i]));
        }

        link_all_product.click();
    }

这是我的错误:

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:627)

1 个答案:

答案 0 :(得分:1)

您的一个断言返回false,因此您当前的标题或网址不包含submenus[i]

您在此处将网址转换为小写(driver.getCurrentUrl().toLowerCase()),但您将其与您的子菜单进行比较,该子菜单不是小写的。这可能是你的问题。这是修复:

String expected = submenus[i].toLowerCase();
String actualUrl = driver.getCurrentUrl().toLowerCase();

Assert.assertTrue(actualUrl.contains(expected));

出于调试目的,您可以单步执行代码以查看正在发生的事情,和/或您可以使错误更有意义:

Assert.assertTrue("Expected: " + actualUrl + " to contain: " + expected,
    actualUrl.contains(expected))