2017-05-09 56 views
0

我想使用Selenium Webdriver檢查我的網站/ cms上的每個鏈接是否通過檢查http狀態來工作。爲此,我在Selenium Webdriver中使用HttpURLConnection類。下面是我執行的代碼:HttpURLConnection顯示不正確的狀態

import java.net.HttpURLConnection; 
import java.net.URL; 
import java.util.List; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 

public class checkingLinks { 

public static void main(String[] args) 
{ 
    WebDriver driver=new FirefoxDriver(); 

    driver.manage().window().maximize(); 

    driver.get("link_to_cms"); 

    driver.findElement(By.id("username")).clear(); 
    driver.findElement(By.id("username")).sendKeys("my_login"); 
    driver.findElement(By.id("password")).clear(); 
    driver.findElement(By.id("password")).sendKeys("my_passwod"); 
    driver.findElement(By.xpath("//button[@type='submit']")).click(); 

    List<WebElement> links=driver.findElements(By.tagName("a")); 

    System.out.println("Total links are "+links.size()); 

    for(int i=0;i<links.size();i++) 
    { 

     WebElement ele= links.get(i); 

     String url=ele.getAttribute("href"); 

     verifyLinkActive(url); 

    } 

} 

public static void verifyLinkActive(String linkUrl) 
{ 
    try 
    { 
     URL url = new URL(linkUrl); 

     HttpURLConnection httpURLConnect=(HttpURLConnection)url.openConnection(); 

     httpURLConnect.setConnectTimeout(3000); 

     httpURLConnect.connect(); 

     System.out.println(linkUrl+" - "+httpURLConnect.getResponseCode()); 


    } catch (Exception e) { 

    } 
} 

} 

的問題是,在結果中的所有鏈接都得到http狀態200,但我知道,他們幾個是,HTTP狀態500.你也許知道是怎麼回事可能?我在上面的代碼中犯了一個錯誤,導致錯誤結果?

+0

老實說,我在代碼中看不到任何錯誤。一切都很完美。如果它的公共URL可以分享提取不正確結果的URL? – DebanjanB

+0

@Dev不幸的是,它不是一個公開的網址 - CMS只在我的辦公網絡中可見。所以在你看來,代碼本身是一個適當的代碼?很高興知道:) –

回答

0

我沒有看到你的HttpURLConnection發送HTTP請求。它只是打開一個連接。

此外,您在驗證(登錄)時收到的cookie需要在後續請求中作爲標頭髮送。

+0

感謝您的回答。那麼,你建議如何修改/添加我的代碼以使事情按照應有的方式工作? –