2012-03-13 3 views

ответ

0

Пожалуйста, используйте selenium webdriver version 2.33. Ниже приведен код C#, поэтому, пожалуйста, скачайте dlls selenium webdriver для .net из ссылки http://docs.seleniumhq.org/download/

Selenium webdriver имеет встроенную функцию под названием ITakesScreenshot для выполнения скриншотов.

Пожалуйста, смотрите ниже кода

`public static void SaveScreenShot(string screenshotFirstName) 
    { 
     var folderLocation = "Screenshot folder path"; 
     var screenshot = ((ITakesScreenshot)Driver).GetScreenshot(); 
     var filename = new StringBuilder(folderLocation); 
     filename.Append(screenshotFirstName); 
     filename.Append(DateTime.Now.ToString("dd-MM-yyyy HH_mm_ss"));\\append date and time 
     filename.Append(".png"); \\append image extension 
     screenshot.SaveAsFile(filename.ToString(), System.Drawing.Imaging.ImageFormat.Png); 

    }` 

Надеются, что это будет работать для вас.

Спасибо, Anshul

0

Если вы используете реализацию IWebDriver (например, InternetExplorerDriver, FirefoxDriver), вы можете просто бросить его в интерфейс ITakesScreenshot и использовать метод GetScreenShot():

IWebDriver driver = new InternetExplorerDriver(); 
Screenshot screenShot = ((ITakesScreenshot)driver).GetScreenshot(); 
screenShot.SaveAsFile(/*fullFileNameAndPath*/, ImageFormat.Png); 

Но если вы хотите сделать это с помощью RemoteWebDriver, вы не можете, потому что он не реализует интерфейс ITakesScreenshot. Таким образом, вы должны создать новый класс, основанный на RemoteWebDriver, который реализует этот интерфейс и добавляет метод GetScreenshot(), такие как:

public class ScreenShotRemoteWebDriver : RemoteWebDriver, ITakesScreenshot 
{ 
    public ScreenShotRemoteWebDriver(Uri RemoteAdress, ICapabilities capabilities) 
     : base(RemoteAdress, capabilities) { } 

    /// <summary> 
    /// Gets a <see cref="Screenshot"/> object representing the image of the page on the screen. 
    /// </summary> 
    /// <returns>A <see cref="Screenshot"/> object containing the image.</returns> 
    public Screenshot GetScreenshot() 
    { 
     // Get the screenshot as base64. 
     Response screenshotResponse = this.Execute(DriverCommand.Screenshot, null); 
     string base64 = screenshotResponse.Value.ToString(); 

     // ... and convert it. 
     return new Screenshot(base64); 
    }  
} 

Теперь вы можете использовать его, как вы бы для IWebDriver:

RemoteWebDriver driver = new ScreenShotRemoteWebDriver(/*uri*/, /*capabilities*/); 
Screenshot screenShot = ((ITakesScreenshot)driver).GetScreenshot(); 
screenShot.SaveAsFile(/*fullFileNameAndPath*/, ImageFormat.Png); 

Мне понадобилось время, чтобы понять лабиринт классов и интерфейсов для драйверов, но через некоторое время все это имеет смысл.

Смежные вопросы