2017-03-23 4 views
1

表示されている画面のみのスクリーンショットをとる既存のコード。私はChromedriverを使用しています。フルページを取る方法JavaでSelenium WebDriverを使用してスクロール可能なWebページのスクリーンショットを表示しますか?

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

スクロールバーのために表示されないページのスクリーンショットを手動で取り込むことはできますか?ページのこれらの部分を表示するため、手動でスクロールする必要があります。そうでない場合は、セレンを使ってどのように達成できますか?それはwebdriverを –

+2

@ShoaibAkhtarのセレンIDEは、ページ全体のスクリーンショットを取るコマンド(captureEntirePageScreenshot)(スクロール可能なページ)は、その画像のスクロールバーがスクロールしているのでしょうか?あなたはスクロールバーでスクリーンショットを生成したいので、そのスクリーンショットでスクロールバーをスクロールできるはずです。これは私が推測するあなたの要件です。はいの場合は、Selenium 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

ダウン投票にコメントを記入してください。 –

関連する問題