【发布时间】:2018-09-21 13:10:08
【问题描述】:
我们使用以下代码在 selenium 中截屏。
WebDriver driver = new FirefoxDriver();
File src = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(src, new File("D:\\TestNGScreenshots\\screenshot.png"));
这是我的理解:
- TakesScreenshot 是一个提供方法的接口 getScreenshotAs() 获取屏幕截图。
- 但是 WebDriver 没有扩展这个接口。
- FirexfoxDriver 类也没有实现这个接口
- getScreenshotAs() 方法在单独的类中实现 实现 TakesScreenshot 的 RemoteWebDriver。
在这里,我们将驱动程序对象转换为另一个接口 TakesScreenshot,我们正在使用它的方法 getScreenshotAs(),该方法在完全不同的类中实现。
那么,如果我们想使用在某些类中实现的接口方法,我们可以通过将我们的对象(从实现另一个接口的类创建)转换为该接口来使用它们吗?
另外,如果我们像这样创建驱动程序
FirefoxDriver driver = new FirefoxDriver()
我们无法在此处将接口转换为驱动程序。我们必须像使用它一样 TakesScreenshot ts = drvier 然后我们可以使用getScreenshotAs()方法。这里也不确定到底发生了什么?
谁能解释一下?
谢谢。
【问题讨论】:
-
FirexfoxDriver class also doesn't implement this interface这是错误的。看这里:seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/… -
We can't cast the Interface to the driver here你能解释一下你的意思吗?
标签: java selenium selenium-webdriver webdriver takesscreenshot