0

Я написал метод загрузки ссылок на страницу навигации. Метод работает, но когда я добавил код для проверки правильного 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++) 
    { 
     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

Это не ошибка, не удалось ваше утверждение!

Вы подтверждаете, что ...toLowerCase().contains(submenus[i]). Тем не менее, каждый элемент в вашем submenus содержит прописные буквы символов!

Вы можете изменить свое утверждение на что-то вроде ...toLowerCase().contains(submenus[i].toLowerCase()).

Следующая проблема будет: Есть ли на самом деле содержит ваш URL, от driver.getCurrentUrl()каждого один ваших submenus пунктов? Я бы не подозревал! Измените Assert на что-то вроде:

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

Таким образом, вы можете видеть, когда и почему ваш Assert не удается.

+0

Когда я запускаю тест, ошибка такая же, хотя я изменил утверждение: java.lang.AssertionError –

+0

@DyJon Я не понимаю. Можете ли вы предоставить [mcve]? – SiKing

+0

@DyJon Обновлен мой ответ, чтобы дать вам дополнительные подсказки. – SiKing