【问题标题】:Can any one explain Screenshot in Selenium?任何人都可以解释 Selenium 中的屏幕截图吗?
【发布时间】:2014-02-19 10:33:19
【问题描述】:
WebDriver driver = new FirefoxDriver();

driver.get("http://www.google.com/");

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);

// Now you can do whatever you need to do with it, for example copy somewhere
FileUtils.copyFile(scrFile, new File("c:\\tmp\\screenshot.png"));

谁能告诉我

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE) 

getScreenShotAsTakesScreenshot接口中的方法......

(TakesScreenshot)driver,指的是什么???你能解释一下吗?

【问题讨论】:

  • (TakesScreenshot)驱动程序,在这里你定义了类,'TakesScreenshot'就像一个实现getScreenshotAs函数的对象。走遍全班观察概念
  • getScreenshotAs() 帮你截屏

标签: java selenium selenium-webdriver


【解决方案1】:

WebDriver 接口不包含getScreenshotAs() 方法,因为可能有 webdriver 无法截屏 - 例如根本不呈现页面的内存驱动程序,如 @987654327 @。

为了拥有该方法,驱动程序必须实现TakesScreenshot 接口,使其能够......好吧......截屏。

因此,您必须以某种方式告诉程序您要截取屏幕截图,并且您绝对确定可以这样做。这就是(TakesScreenshot)driver 部分的用途。在 Java 中,它被称为casting,它的字面意思是“我知道这个driver 实例可以截屏,请将其转换为TakesScreenshot 类型。”

如果您的转换成功,则一切正常,driver 对象将在运行时转换为 TakesScreenshot 的实例。但是,如果您的转换失败,您将在运行时收到 ClassCastExcepion

一些例子:

// We already know this is ok, because FirefoxDriver implements (IS-A) TakesScreenshot.
WebDriver driver = new FirefoxDriver();
TakesScreenshot screenshottingDriver = (TakesScreenshot)driver;

// This will fail at run-time, because HtmlUnitDriver does not implement TakesScreenshot;
WebDriver driver = new HtmlUnitDriver();
TakesScreenshot screenshottingDriver = (TakesScreenshot)driver;

// You can use the `instanceof` operator to check:
if (driver instanceof TakesScreenshot) {
    // we can be sure we can take screenshots, the cast will be safe
    ((TakesScreenshot)driver).getScreenshotAs(...);
}

【讨论】:

    【解决方案2】:

    正如您可能读到的here,它表示驱动程序可以截取屏幕截图。有必要进行强制转换,因为 WebDriver 接口不包含 getScreenshotAs 方法,尽管它由大多数实现该接口的类实现,例如 FirefoxDriver。

    【讨论】:

      猜你喜欢
      • 2011-03-31
      • 1970-01-01
      • 2015-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 1970-01-01
      相关资源
      最近更新 更多