2016-03-28 3 views
0

Ich habe ein Problem beim Versuch, einen Screenshot mit Selen mit dem 32-Bit-IE-Treiber zu erstellen.Selen einfrieren auf IE Screenshot. Es ist möglich zu entfrieren?

Die Seite, die ich testen, funktioniert nur auf IE und ich verwende den 32-Bit-Treiber, da der 64-Treiber zu langsam ist.

Das Problem, das ich habe, ist, dass auf einigen Seiten, die zu lang sind, der Screenshot fehlschlägt oder nur einen Teil der Seite und den anderen Teil in schwarz zu nehmen. Dies ist nicht das Problem, das Problem ist, dass, wenn Selen nicht den Screenshot nimmt IE nicht mehr reagiert und muss wiederhergestellt werden. Wenn das passiert, kann der Treiber (offensichtlich) kein Element finden und mein Testfall schlägt fehl.

ich etwas tue, wie:

try{ 
    Screnshot ss = ((ITakeScreenshot)driver).GetScreenshot(); 
    ss.SaveAdFile("path", ImageFormat.Png); 
}catch{ 
    Log.Error("And Error happened"); 
} 

So etwa mir keine Sorgen, wenn der Screenshot wird gerade oder nicht mein Problem ist, dass wenn ich es nicht kann nicht mit dem Testfall fortgesetzt werden. Gibt es eine Möglichkeit, den Explorer aufzutauen? oder um sicherzustellen, dass der Screenshot nicht fehlschlägt (ich sehe lieber schwarz im Screenshot, dass mein Test aufgrund eines Screenshots einer Seite zu groß ist)

PS Ich habe es mit driver.Dispose() versucht, obwohl das funktioniert (den Browser auffrischen) es tötet die Kommunikation, die Selenium und der Browser haben. Wenn es irgendeine Möglichkeit gibt, die Verbindung wieder herzustellen, die funktionieren könnte.

Antwort

1

Ich würde einen Screenshot des Ansichtsfensters anstelle der ganzen Seite machen. Es wird schneller und stabiler sein:

DesiredCapabilities caps = DesiredCapabilities.internetExplorer(); 
caps.setCapability("ie.enableFullPageScreenshot", false); 

WebDriver driver = new InternetExplorerDriver(caps); 
driver.get("http://stackoverflow.com/"); 

File file = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 

driver.quit(); 
Verwandte Themen