2017-03-12 70 views
2

這裏是我的selemium測試:硒截圖參數無效

[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); 
    } 

大多數的時間在網上

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

本次測試失敗,消息「放慢參數是無效的」。我做錯了什麼?

+0

你看過這個帖子嗎? (http://stackoverflow.com/questions/3422262/take-a-screenshot-with-selenium-webdriver) 不完全確定它是否會工作,但你可以嘗試像我說的鏈接: 'File scrFile =((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(scrFile,新的文件( 「C:\\ \\ TMP screenshot.png」));' (對不起,代碼格式化是在評論如此糟糕) – Dillanm

+0

@Dillanm我還沒有發現TakesScreenshot類型WebDriver或WebDriver.Support dll。 –

+0

對不起,在.NET中它是'ITakesScreenshot',它是基礎'WebDriver.dll'庫的一部分 – Dillanm

回答

2

在Internet Explorer中的驅動程序,它的目的是引發此錯誤。

Github bug tracking

由於IE的驅動程序是如何被迫 爲了工作充分-DOM截圖的侷限性,截圖僅支持 瀏覽器窗口查看HTML文檔。驅動程序完全按照預期的 (無論Chrome或Firefox的行爲)如何。 IE瀏覽器本身的限制迫使 驅動程序。 因此,我將此視爲「按預期工作」。

如果您可以使用其他驅動程序,您可以嘗試使用Firefox或Chrome驅動程序進行截圖。

+0

是的,我讀過這個。但在我的情況下,這只是一個簡單的HTML文檔。 –

0

試試這個代碼:

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

這沒有幫助 –