Селен (Java), java.lang.AssertionError

Я написал способ загрузки страниц навигации по ссылкам. Метод работает, но когда я добавил код для проверки правильного URL-адреса и заголовка вкладки, мой тест не был выполнен. Иногда случается, что для быстрых цикловых кликов на страницах, которые не загружаются, я не знаю, является ли это проблемой, но я не могу проверить, загружена ли страница с правильным URL-адресом или заголовком вкладки, или проблема заключается в том, код, который я написал для проверки правильности 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 ответ

Решение

Один из ваших утверждений возвращает false, поэтому ваш текущий заголовок или URL не содержат submenus[i]

Вы конвертируете URL в нижний регистр здесь (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))
Другие вопросы по тегам