2017-10-23 1 views
0

Ich bin derzeit ein bisschen ein Problem.Tests fehlgeschlagen zufällig in IEDriverServer

In Chrome und Firefox laufen die Tests perfekt, aber während des Testlaufs von IE können sie manchmal bestimmte Elemente nicht auswählen.

(Chrome und Firefox prüft alle passieren und in IE manchmal ein oder mehrere Tests fehlschlagen. Aber manchmal sind sie durchlaufen werden. Es scheint ein wenig zufällig zu sein.)

Weiß jemand, was das Problem ist?

Code I die IEDriver nennen bin mit:

var service = InternetExplorerDriverService.CreateDefaultService(); 
service.LibraryExtractionPath = "Path to extraction path"; 
service.Port = 1089; 

InternetExplorerOptions options = new InternetExplorerOptions(); 
options.IgnoreZoomLevel = true; 
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true; 

InternetExplorerDriver("Path",options); 
return ieDriver = new InternetExplorerDriver(service, options); 

Mit IEDriver 3.5.1.0 auf IE11

Antwort

0

flockige Tests sind eine große Sache in den Selen basierten Tests. Einfach gesagt - es gibt einfach zu viele Faktoren, die Ihre Ausführung beeinflussen können. Meine Erfahrung mit IE hat mir gezeigt, dass Browser tatsächlich das DOM erstellen und den Inhalt mit unterschiedlicher Geschwindigkeit wiedergeben. Das bedeutet, dass Ihre WebElements aktiviert sind und Sie mit ihnen in verschiedenen Zeitbereichen (die sehr unterschiedlich sein können) interagieren können, insbesondere für umfangreiche Animationen.

enter image description here

Als you can see IE ist kein Top-Performer, wenn es in den Tests auf allgemeinen Seiten-Rendering-Operationen und Berechnungen mit HTML5 Ladegeschwindigkeit, Speichernutzung und Performance.

Was könnte Ihnen helfen:

  • benutzerdefinierten JS Zustand hinzufügen, bevor ExplicitWaits, wie so (versucht sich zu erinnern, den Code ich in meinem Framework wurde damals) Aufruf:

    // need to wait for Javascript to load 
    ((IJavascriptExecutor) driver).ExecuteScript("return document.readyState").ToString().Equals("complete"); 
    // need to wait for jQuery to load 
    ((IJavascriptExecutor) driver).ExecuteScript("return (window.jQuery != null) && (jQuery.active === 0);"); 
    
  • Achten Sie darauf, genügend Zeit zu geben (Wartezeiten), bevor Sie mit den Seitenelementen interagieren.

+0

@ekonstadinov Zunächst einmal, danke für Ihre gründliche Antwort. Die Seitenelemente (z. B. Textfelder, Schaltflächen) werden jedoch alle gerendert. Das Problem scheint zu sein, dass der Code nicht in der Lage ist, die Elemente zu finden, nach denen ich suche, was zufällig zu passieren scheint, also denke ich nicht, dass es ein JS-Problem ist. Hast du eine Vorstellung davon, was es noch sein kann? (Ich gebe ihnen 3 Sekunden warten, bevor sie interagieren und dann weitere 30 Sekunden, um das Element zu finden) – user1343543

+0

Ich würde sagen, wenn es in der Lage ist, die Elemente auf IE sogar einmal zu finden - es ist kein Selektor-Problem. Allerdings habe ich ähnliche Randfälle mit XPath und Firefox erlebt. So können Sie mit verschiedenen Locator versuchen, z. Wenn das aktuelle CSS ist, versuchen Sie XPath und umgekehrt. Im Allgemeinen sind Treiber-Browser-Synchronisationsprobleme nicht so selten und diese erfordern ein detailliertes Debugging. Eine weitere Sache - ist die FE mit einem komplexen Rahmen wie eckig? Wenn ja, benötigen Sie eine kompliziertere Portierung, um auch die Ereignisse zu verarbeiten. – ekostadinov

Verwandte Themen