2017-01-18 28 views
1

我寫了一個方法來加載頁面導航鏈接。該方法的工作原理,但當我添加代碼來檢查正確的URL和標籤標題我的測試不執行。有時候會發生這樣的情況:對於循環快速點擊頁面而沒有加載的頁面,我不知道這是否是一個問題,但我無法檢查加載了正確的url或tab標題的頁面,或者問題是我爲了檢查正確的網址或標籤標題而編寫的代碼。Selenium(Java),java.lang.AssertionError

這是我的方法:

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) 
+0

的可能的複製[如何檢查頁面是否加載了正確的URL和標題標題](http://stackoverflow.com/questions/41704922/how-to-check-whether-the-page-loaded-with-the-correct-url-and-標題) – SiKing

回答

1

你的一個斷言是返回false,所以你當前的標題或URL不包含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)) 
+1

代碼沒有到達檢查所有方面,當你檢查第3頁時下降。調試代碼不起作用,讓我這個錯誤:斷言不能應用於(boolen,java.lang.String) –

+0

Wh在第3頁的測試秋天顯示此錯誤:java.lang.AssertionError –

+0

對不起,我修復了斷言,讓我的測試框架混淆了。信息應該是第一位的,條件第二位。請再試一次:) – mrfreester