无法使用Selenium截取CEF应用程序的屏幕截图

时间:2017-02-07 16:58:03

标签: selenium chromium chromium-embedded

我正在使用Selenium来自动化CEF应用程序。我成功地能够执行点击等操作。但是无法使用Selenium驱动程序拍摄屏幕截图。因为它是自动化非常需要的功能。我怎么能这样做?

我使用以下内容:

  1. CEF申请 - sample application provided by CEF
  2. selenium jar - selenium-server-standalone-3.0.1
  3. cef_binary_3.2924.1564.g0ba0378_windows64_client
  4. chromedriver
  5. 找到以下代码:

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions;
    import org.openqa.selenium.TakesScreenshot;
    import org.openqa.selenium.OutputType;
    
    public class Example  {
        public static void main(String[] args) {
            // Path to the ChromeDriver executable.
            System.setProperty("webdriver.chrome.driver", "D:/CEFTesting/chromedriver.exe");
            // Path to the CEF executable.
            ChromeOptions options = new ChromeOptions();
    
             options.setBinary("D:/CEFTesting/cef_binary_3.2924.1564.g0ba0378_windows64_client/Release/cefclient.exe");
    
            WebDriver driver = new ChromeDriver(options);
            driver.get("http://www.google.com/xhtml");
            sleep(3000);  // Let the user actually see something!
            WebElement searchBox = driver.findElement(By.name("q"));
            searchBox.sendKeys("ChromeDriver");
            searchBox.submit();
            sleep(5000);  // Let the user actually see something!
    
            String screenshotBase64 = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BASE64);
            System.out.println(screenshotBase64);
            sleep(5000);  // Let the user actually see something!
            driver.quit();
        }
    }
    

    我正面临错误。

1 个答案:

答案 0 :(得分:0)

我正在使用以下内容:

  1. CEF申请 - CEF提供的样本申请(link - https://bitbucket.org/chromiumembedded/cef/wiki/UsingChromeDriver.md
  2. selenium jar - selenium-server-standalone-3.0.1
  3. cef_binary_3.2924.1564.g0ba0378_windows64_client
  4. chromedriver
  5. 以下是代码:

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions;
    import org.openqa.selenium.TakesScreenshot;
    import org.openqa.selenium.OutputType;
    
    public class Example  {
        public static void main(String[] args) {
            // Path to the ChromeDriver executable.
            System.setProperty("webdriver.chrome.driver", "D:/CEFTesting/chromedriver.exe");
            // Path to the CEF executable.
            ChromeOptions options = new ChromeOptions();
    
            options.setBinary("D:/CEFTesting/cef_binary_3.2924.1564.g0ba0378_windows64_client/Release/cefclient.exe");
    
            WebDriver driver = new ChromeDriver(options);
            driver.get("http://www.google.com/xhtml");
            sleep(3000);  // Let the user actually see something!
            WebElement searchBox = driver.findElement(By.name("q"));
            searchBox.sendKeys("ChromeDriver");
            searchBox.submit();
            sleep(5000);  // Let the user actually see something!
    
            String screenshotBase64 = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BASE64);
            System.out.println(screenshotBase64);
            sleep(5000);  // Let the user actually see something!
            driver.quit();
        }
    }