2017-03-23 7 views
1

보이는 화면 만의 스크린 샷을 찍는 기존 코드. Chromedriver을 사용하고 있습니다.전체 페이지 가져 오는 방법 Java로 Selenium WebDriver를 사용하여 스크롤 할 수있는 웹 페이지의 스크린 샷?

System.setProperty("webdriver.chrome.driver", "D:/chromedriver/chromedriver.exe"); 
    WebDriver driver = new ChromeDriver(); 
    driver.get("http://www.bbc.com");  
    driver.manage().window().maximize(); 
    System.out.println(driver.getTitle()); 
    File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
    FileUtils.copyFile(scrFile, new File("D:/chromedriver/scr3.png")); 
    driver.close(); 
+1

셀렌이 표시되는 웹 요소와 상호 작용할 수 있기 때문에 가능하지 않을 것 같습니다. –

+0

스크롤 막대로 인해 보이지 않는 페이지의 스크린 샷을 수동으로 가져올 수 있습니까? 페이지의 해당 부분을 보려면 수동으로 스크롤해야합니다. 그렇지 않다면 어떻게 셀레늄을 사용하여 달성 할 수 있습니까? –

+2

@ShoaibAkhtar 셀레늄 IDE에는 전체 페이지 (화면 이동 가능한 페이지)의 스크린 샷을 가져 오는 명령 (captureEntirePageScreenshot)이 있습니다. 왜 웹 드라이버에서 구현할 수 없는지 –

답변

0

셀렌을 사용하면 안됩니다. 작업을 수행하려면 다른 도구가 필요합니다. 링크를 따라 내 대답을 참조하십시오 : Screen shot issue in selenium webdriver

희망, 당신을 도울 수 있습니다.

0

아래 코드를 찾으십시오. 원하는만큼 많은 스크린 샷을 스크롤하고 가져올 수 있습니다. elements Web 요소를 확인하십시오. 그들을 저장하고 상대적으로 스크롤하십시오. 원하는 스크린 샷 수에 따라 스크롤 할 수 있습니다.

driver.get("http://www.bbc.com");  
driver.manage().window().maximize(); 
System.out.println(driver.getTitle()); 
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
FileUtils.copyFile(scrFile, new File("D:/chromedriver/scr3.png")); 
WebElement elements = driver.findElement(By.xpath(".//*[@id='page']/section[6]/div/div/div[1]/ul/li[3]/div/div[2]/h3/a"));  
Thread.sleep(3000L); 
JavascriptExecutor js = (JavascriptExecutor) driver; 
int yPosition = elements.getLocation().getY(); 
js.executeScript("window.scroll (0, " + yPosition + ") ");  
Thread.sleep(3000L);   
File scrFile1 = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
FileUtils.copyFile(scrFile1, new File("D:/chromedriver/scr4.png")); 
driver.close(); 
+0

다운 투표에 대한 의견을 입력하십시오. –