2017-01-16 199 views
0

我從另一個軟件包中導入了此類,並嘗試調用此方法,但它不起作用。使用Selenium拍攝屏幕截圖

當我在同一個類中創建此方法並調用它時,它正在工作。

private void getScreenshot() throws IOException 
{ 
     File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
     SimpleDateFormat dateFormat = new SimpleDateFormat("DD-MM-YYYY/hh-mm-ssaa"); 
     String destfile = dateFormat.format(new Date()) + ".png"; 
     FileUtils.copyFile(scrFile, new File("D:\\workspace\\Firewall\\Resources\\ScreenShots\\"+destfile)); 
} 
+1

嘗試添加一些格式到您的問題,因爲它很難讀取您的代碼。如果有任何 – Andersson

+4

也添加異常日誌如果你在另一個類中有這個確切的方法,它不工作,因爲它是'私人'。如果是這樣的話,你應該把它改爲'public'。 – Tom

回答

1

我想主要的原因是你導入了錯誤的庫。退房:

import java.io.File; 
import java.io.IOException; 
import org.apache.commons.io.FileUtils; 
import org.junit.Test; 
import org.openqa.selenium.OutputType; 
import org.openqa.selenium.TakesScreenshot; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

而在情況下,如果你的圖書館將是相同的,嘗試使用我的方法:

public class TakeScreenshot { 
    WebDriver driver; 
    public TakeScreenshot(WebDriver driver){ 
     this.driver = driver; 
    } 
public void ScreenShot(String nameTc) 
{ 
// Take screenshot and store as a file format 
File src= ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
try { 
// now copy the screenshot to desired location using copyFile //method 
FileUtils.copyFile(src, new File("bin/" + nameTc + ".png")); 
} 
catch (IOException e) 
{ 
    System.out.println(e.getMessage()); 
}} } 
0

利用這一點,你可以捕捉屏幕截圖,只需要調用captureScreenShot()通過發送文件路徑進行屏幕截圖的方法

public static void captureScreenShot(String filePath) 
    { 
    File scrFile =((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
    try 
    { 
     FileUtils.copyFile(scrFile, new File(filePath)); } 
    catch (IOException e) 
    { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); }}