【问题标题】:Selenium-cucumber frameork error while taking screenshotSelenium-cucumber 框架在截屏时出错
【发布时间】:2017-06-11 19:09:36
【问题描述】:

我正在执行一个 selenium-cucumber 框架,但遇到以下问题:`

org.openqa.selenium.WebDriverException: Could not convert screenshot to base64 - 
Error: Unable to load canvas into base64 string - 
[Exception... "Failure"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  
location: "JS frame :: file:///C:/Users/c38151/AppData/Local/Temp/anonymous7393315997897601641webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js :: fxdriver.screenshot.toBase64 :: line 10440"  data: no]
Command duration or timeout: 1.13 seconds
Build info: version: '2.53.0', 
revision: '35ae25b1534ae328c771e0856c93e187490ca824', 
time: '2016-03-15 10:43:46'
System info: host: 'W7E1384109', ip: '172.26.31.114', 
os.name: 'Windows 7', 
os.arch: 'amd64', 
os.version: '6.1', 
java.version: '1.8.0_74'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=45.2.0, platform=WINDOWS, nativeEvents=false, acceptSslCerts=true, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: e48040a1-37c2-4767-a46f-acaf697dc8c4

请告诉我这个问题的解决方案。这与 lo RAM 有关吗?

【问题讨论】:

标签: selenium-webdriver automation cucumber


【解决方案1】:
@After public void snapShotOnFail(Scenario scenario) throws Throwable {
        try {
            if (scenario.isFailed()) {
                final byte[] screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
                scenario.embed(screenshot, "image/png");

            }
        } catch (WebDriverException somePlatformsDontSupportScreenshots) {
            System.err.println(somePlatformsDontSupportScreenshots.getMessage());
        }
    }

【讨论】:

    【解决方案2】:

    试试这个并根据你的需要修改它

        @After
    public void shutDown(Scenario scenario){
        if (scenario.isFailed()) {
            final byte[] screenshot = ((TakesScreenshot) Driver.getDriver()).getScreenshotAs(OutputType.BYTES);
            scenario.embed(screenshot, "image/png");
        }
        Driver.closeDriver();
    

    }

    【讨论】:

      【解决方案3】:

      在截屏时尝试这个错误。它可以在 Cucumber 范围报告中添加失败测试用例的屏幕截图。

      public void forAfterScen(Scenario scenario) throws IOException
          {
              if (scenario.isFailed()) {
                  String screenshotName = scenario.getName().replaceAll(" ", "_");
                  try {
                      TakesScreenshot ts = (TakesScreenshot) driver;
                      File sourcePath = ts.getScreenshotAs(OutputType.FILE);
      
                      File destinationPath = new File(System.getProperty("user.dir") + "\\Report\\" + screenshotName+".png");
      
                      Files.copy(sourcePath, destinationPath);   
      
                      Reporter.addScreenCaptureFromPath(destinationPath.toString());
                      Reporter.addScenarioLog(screenshotName);
                  } catch (IOException e) {
                  } 
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-11
        • 2023-03-29
        • 1970-01-01
        • 1970-01-01
        • 2012-09-17
        • 1970-01-01
        • 2018-01-20
        • 1970-01-01
        相关资源
        最近更新 更多