2017-03-12 2 views
2

Voici mon test de selemium:paramètre capture d'écran est Sélénium pas valide

[Test] 
    public void RunStepsTest() 
    { 
     using (var driver = new InternetExplorerDriver()) 
     { 
      driver.Navigate().GoToUrl(Url); 
      ExecuteStep(driver, "start"); 
      ExecuteStep(driver, "step1"); 
      ExecuteStep(driver, "step2"); 
      ExecuteStep(driver, "finish"); 
     } 
    } 

    private void ExecuteStep(InternetExplorerDriver driver, string stepName) 
    { 
     var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 
     wait.Until(x => ExpectedConditions.ElementIsVisible(By.Id(stepName))); 

     var scrrenshot = driver.GetScreenshot(); 
     scrrenshot.SaveAsFile(Path.Combine(ScreenshotDirectory, stepName + ".jpg"), ScreenshotImageFormat.Jpeg); 

     var link = driver.FindElement(By.Id(stepName)); 
     link.SendKeys(Keys.Enter); 
    } 

La plupart du temps ce test échoue sur la ligne

 scrrenshot.SaveAsFile(Path.Combine(ScreenshotDirectory, stepName + ".jpg"), ScreenshotImageFormat.Jpeg); 

avec le message "paramter est pas valide". Qu'est-ce que je fais de mal?

+0

Avez-vous regardé ce sujet? (http://stackoverflow.com/questions/3422262/take-a-screenshot-with-selenium-webdriver) Pas exactement sûr si ça va marcher mais vous pouvez essayer comme il le dit dans le fil j'ai lié: 'File scrFile = (pilote (TakesScreenshot)) .getScreenshotAs (OutputType.FILE); FileUtils.copyFile (scrFile, new File ("c: \\ tmp \\ screenshot.png")); ' (désolé, le formatage du code est si mauvais dans les commentaires) – Dillanm

+0

@Dillanm Je ne ai pas trouvé de type TakesScreenshot dans WebDriver ou WebDriver.Support dlls. –

+0

Désolé, dans .NET c'est 'ITakesScreenshot' et il fait partie de la base de la bibliothèque' WebDriver.dll' – Dillanm

Répondre

2

Dans pilote Internet Explorer, il est destiné à lancer cette erreur.

De Github bug tracking:

En raison des limites de la façon dont le conducteur IE est forcé de travailler dans afin de prendre des captures d'écran plein DOM, des captures d'écran ne sont pris en charge pour les fenêtres du navigateur affichage des documents HTML. Ceci est entièrement comme prévu par le pilote (quel que soit le comportement de Chrome ou de Firefox). Le pilote est forcé par les contraintes du navigateur IE lui-même. En conséquence, je ferme ceci comme "fonctionnant comme prévu".

Si vous êtes autorisé à utiliser un autre pilote, vous pouvez essayer Firefox ou Chrome Driver pour avoir une capture d'écran.

+0

Oui, j'ai lu ceci. Mais dans mon cas, ce n'est qu'un simple document HTML. –

0

Essayez ce code comme ceci:

Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot(); 
ss.SaveAsFile("e:\\pande", System.Drawing.Imaging.ImageFormat.Jpeg); 
+0

cela n'aide pas –