0
A
回答
0
我爲你編了下面的代碼;但是這有以下依賴性/限制:
1)它可以運行在鉻(我可以修改與其他瀏覽器兼容)
2)這段代碼運行時(因爲它使用的Java機器人的瀏覽器應該是開放的類),所以打到RUN後,讓瀏覽器打開:
3)Thread.sleep(5000)的目的不會改變這一點。
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
List <WebElement> allImages = driver.findElements(By.tagName("img"));
for(WebElement img :allImages){
String imgSrc = img.getAttribute("src");
String baseHandle = driver.getWindowHandle();
Actions action = new Actions(driver);
action.contextClick(img).build().perform();
Thread.sleep(5000);
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_DOWN);
robot.keyRelease(KeyEvent.VK_DOWN);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
Thread.sleep(5000);
Set<String> allHandles = driver.getWindowHandles();
allHandles.remove(baseHandle);
String newHandle = null;
for(String str : allHandles){
newHandle = str;
}
driver.switchTo().window(newHandle);
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
if(driver.findElement(By.tagName("body")).getText().contains("not found")){
System.out.println(imgSrc + "Image is broken!");
}
driver.close();
driver.switchTo().window(baseHandle);
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
}
2
要檢查的圖像壞了,你可以簡單地檢查元素的naturalWidth
爲0。將通過頁面上的圖片循環,這樣做檢查對於每個。至於在整個網站上這樣做,你將不得不建立一個爬蟲或理想地找到一個現有的爬蟲,並且這是超出了對SO的問題的範圍。
演示代碼
driver.get("http://the-internet.herokuapp.com/broken_images");
for (WebElement image : driver.findElements(By.cssSelector("img")))
{
isImageBroken(image);
}
以測試中斷的圖像
public void isImageBroken(WebElement image)
{
if (image.getAttribute("naturalWidth").equals("0"))
{
System.out.println(image.getAttribute("outerHTML") + " is broken.");
}
}
運行時功能,該輸出
<img src="asdf.jpg"> is broken.
<img src="hjkl.jpg"> is broken.
注:上面的功能是爲這個問題有點兒做作。如果返回boolean
並且在測試腳本中完成了驗證,則會更好。
public boolean imageExists(WebElement image)
{
return !image.getAttribute("naturalWidth").equals("0");
}
0
我希望這會幫助你。
List<WebElement> links = driver.findElements(By.tagName("img"));
int brokenImagesCount=0;
for (int i = 0; i < links.size(); i++) {
System.out.println(links.get(i));
String linkURL=links.get(i).getAttribute("src");
System.out.println(links.get(i).getText());
URL url = new URL(linkURL);
HttpURLConnection http = (HttpURLConnection) url.openConnection();
http.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
http.setConnectTimeout(10000);
http.setReadTimeout(20000);
int statusCode=http.getResponseCode();
if(statusCode==404||statusCode==500){
brokenImagesCount=brokenImagesCount+1;
System.out.println(linkURL+"and its Status codes is:"+statusCode);
}
}
System.out.println("total number of broken images are: "+brokenImagesCount);
請更新我,如果它可以幫助你。
0
- 獲取xpath,然後使用標籤名稱;獲取頁面中的所有鏈接
- 單擊頁面中的每個鏈接
在目標頁面標題中,查找404/500錯誤。
public static void verifyimgActive(WebElement img) { try { HttpResponse response = new DefaultHttpClient().execute(new HttpGet(img.getAttribute(「src」))); if (response.getStatusLine().getStatusCode() != 200) { invalidimg++; } catch (Exception e) { e.printStackTrace(); } } }
相關問題
- 1. 如何使用Selenium Webdriver在網頁中查找「光標」位置?
- 2. 如何使用Selenium WebDriver檢查網站是否使用Ajax?
- 3. 如何使用Selenium WebDriver在網頁上查找元素?
- 4. 如何搜索/查找使用Selenium的Java webdriver的
- 5. 如何使用Selenium Webdriver正確查找網頁的元素?
- 6. 如何在Java Selenium Webdriver中使用Java查找標題標題的xpath
- 7. 使用selenium webdriver查找webelements在網頁中的加載時間
- 8. 如何使用Selenium Webdriver - Java查找網頁上出現的複選框總數?
- 9. 損壞的圖像已損壞
- 10. 如何使用node.js和gm檢查損壞的jpg圖像?
- 11. 如何在Java中檢測損壞的圖像(PNG,JPG)
- 12. 使用Selenium Webdriver瀏覽網站
- 13. 損壞圖像中的OpenCV
- 14. 如何使用Selenium Java登錄網站?
- 15. 如何在java中使用selenium webdriver查找特定的表格元素?
- 16. 如何用selenium WebDriver查找textfield元素?
- 17. 如何在Java中使用Selenium Webdriver檢查複選框?
- 18. 如何使用Selenium Webdriver查找網頁上多個按鈕的數量
- 19. UIImagePickerController損壞圖像
- 20. Selenium WebDriver:登錄到網站
- 21. 如何在Java WebDriver中使用Selenium WebDriver選擇2nd Level SubMenu
- 22. 使用Selenium Webdriver驗證網頁上的圖像存在
- 23. 在Selenium Webdriver(Java)中聲明整數值
- 24. 損壞的圖像標記
- 25. 在IE中使用Java的Selenium WebDriver
- 26. 使用LWP :: UserAgent的圖像損壞
- 27. Heroku圖像損壞
- 28. 如何驗證Selenium中使用Webdriver的圖像
- 29. 檢查圖像是否損壞
- 30. Selenium Webdriver使用Java的ElementNotVisibleException
是否需要是硒?我原以爲網絡爬蟲會更好。 – halfer
是的,它需要在硒。 – MSL
[這裏的一些想法](https://duckduckgo.com/?q=selenium+site+crawler) - 有什麼好處? – halfer