Мы используем следующий код для создания снимков экрана в селене.
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 () реализован в отдельном классеRemoteWebDriver, который реализует TakesScreenshot.
Здесь мы приводим объект драйвера к другому интерфейсу TakesScreenshot и используем его метод getScreenshotAs (), который реализован в совершенно другом классе.
Итакесли мы хотим использовать методы интерфейса, которые были реализованы в некоторых классах, можем ли мы использовать их, приведя наш объект (который был создан из класса, реализующего к другому интерфейсу) к этому интерфейсу?
Кроме того, если мы создаемтакой драйвер, как
FirefoxDriver driver = new FirefoxDriver()
Мы не можем привести интерфейс к нейе.Мы должны использовать его как TakesScreenshot ts = drvier, а затем мы можем использовать метод getScreenshotAs ().Здесь также не уверены, что именно происходит?
Может кто-нибудь объяснить, пожалуйста?
Спасибо.