2016-03-30 17 views
-3

Dies ist mein erster Post auf StackOverflow und ich hoffe, ich konnte das gesamte Problem im Detail zur Verfügung stellen. Bitte lassen Sie mich wissen, falls ich weitere Informationen zur Verfügung stellen muss. Problembeschreibung: Ich verwende einen normalen Breadcrumb, der meine Navigationsreihenfolge von einer Seite zur anderen anzeigt. Der Breadcrumb hat eine ID = "divbreadcrumb" im HTML-Format.Selenium webdriver returns string.Empty für Breadcrumb-Text (IwebElement) bei der Bereitstellung auf TFS

Beispiel: Wenn ich aus dem Hauptmenü (Home) zu Buchungen Seite (Reservierungen) navigieren, dann ist die Navigation ist wie folgt:

Home> Buchungen

Ich möchte meine Prüfung der Brotkrume automatisieren und Überprüfen Sie den Breadcrumb-Text, der auf der Seite angezeigt wird, im Gegensatz zu dem Breadcrumb-Text, der es eigentlich sein sollte. Ich versuche, dies zu erreichen, indem ich Selen Webdriver zusammen mit den ATDD-Tools Specflow/SpecRun und Nunit benutze, die den unten angegebenen Code verwenden.

Jetzt, wenn ich versuche, den Test auf meinem lokalen auszuführen, funktioniert es gut, aber wenn ich den Code in TFS einchecken und es erstellen, schlägt der VS Test Runner den Build fehl, da es Text aus dem IwebElement-Element nicht finden kann oder es gibt den Text als String.Empty zurück. Nun, der gleiche Test läuft, wenn er auf meinem lokalen Rechner läuft, einwandfrei und gibt die erwarteten Testergebnisse und die erwarteten Werte für mein Iwebelement (für Breadcrumb). Außerdem wird die HTML-Struktur des obigen Breadcrumbs im Backend gerendert, was ich sagen kann, weil ich versucht habe, HTML zu sehen, das es zur Laufzeit mit der Eigenschaft seitenquelle von webdriver rendert und in meiner Exception-Nachricht anzeigt.

 <div class="breadcrumb" > 
       <div class="breadcrumb-content" > 
     <div class="breadcrumb" id="divBreadcrumb" >       
     <a onclick="some code written here" href="xyz.com">Home</a> 
     &nbsp;&nbsp;&gt;&nbsp;&nbsp;<a href="LMN.com">Bookings </a>      
</div>    
    </div> 
    </div> 

PFB der Code, den ich in meinem Automatisierungs-Script verwendet habe den Text aus dem Brotkrümel auf der Seite kommen zu überprüfen:

Auch ist mein Back-End-HTML-Code wie angezeigt

public void TestingBreadcrumb(int p0) 
{ 
InternetExplorerOptions IEOptions = new InternetExplorerOptions(); 
IEOptions.IntroduceInstabilityByIgnoringProtectedModeSettings = true; 
IEOptions.IgnoreZoomLevel = true; 
IEOptions.UnexpectedAlertBehavior = InternetExplorerUnexpectedAlertBehavior.Ignore; 

IWebDriver iEDriver = new InternetExplorerDriver(IEOptions); 
iEDriver.Manage().Window.Maximize(); 
iEDriver.Navigate().GoToUrl("http://example.com"); 
var breadcrumb = iEDriver.FindElement(By.Id("divBreadcrumb")).Text.ToString(); 
Assert.AreEqual("Home > Bookings ", breadcrumb); 
} 

der Fehler I erhalten

[ERROR] Expected string length 18 but was 0. Strings differ at index 0. Expected: "Home > Bookings " 
But was: <string.Empty> 
-----------^ 
+1

Mögliches Duplikat von [Selenium-Webdriver gibt String.Empty für Breadcrumb-Text zurück Iwebelement bei Implementierung auf TFS] (http://StackOverflow.com/questions/36305151/selenium-webdriver-returns-string-empty-breadcrumb-text -iwebement-when-dep) – Andersson

+0

@Andersson - ja. Ich wollte meine andere obige Frage editieren und dachte mir, sie würde meine Frage bearbeiten, aber sie kopierte sie in eine neue Frage. Ich habe die obige Frage gelöscht, da dieser Beitrag hier alle Informationen enthält, die ich bezüglich meines Problems/Fehlers teilen könnte. – Anchit

Antwort

0

Dies war meine erste Frage, die ich auf Stachoverflow gepostet habe und ich freue mich, dass ich den Grund finden konnte, aufgrund dessen der Fehler bei der Bereitstellung auf TFS aufgetreten ist. Dies liegt daran, dass die Anwendung zwar auf dem TFS-Server ausgeführt wurde, obwohl der HTML-Code am Back-End generiert wurde, aber nicht angezeigt wurde (möglicherweise, weil TFS die Anwendung mit niedriger Auflösung ausführt und dies ein wenig schwierig zu beheben ist). und die Anwendung reagierte darauf, den Breadcrumb zu verstecken.

Also, obwohl das HTML gerendert wurde, kann das Selenium-Tool nur das Element finden, aber sein Wert wäre leerer Text, bis das Element am Frontend sichtbar ist. wir müssen prüfen, ob das Element sichtbar ist oder nicht und dann versuchen, das Element anzuzeigen, um seinen Wert zu holen.

Dies löste meinen Fehler oben.

0

Wenn ich Ihre HTML aussehen scheint es, wie der Text nicht relat ist zu Ihrem Breadcrumb-Objekt. Die Suche, die Sie verwenden, wird die <div> finden, aber der Text scheint an ein <a> Kind dieser div.
Sie können entweder die Find-Methode verwenden, um das richtige Kind zu erhalten, oder Sie können die textContent-Eigenschaft des div versuchen.

Die Unterschiede zwischen Ihrem lokalen und TFS-Lauf können wahrscheinlich durch verschiedene Versionen von IE und/oder OS erklärt werden.