2016-03-30 2 views
-3

Ceci est mon premier post sur StackOverflow et j'espère avoir été en mesure de fournir l'ensemble du problème en détail. S'il vous plaît faites le moi savoir au cas où je devrais fournir d'autres informations. Description du problème: J'utilise un fil d'Ariane régulier qui affiche mon ordre de navigation d'une page à l'autre. Le fil d'Ariane a un id = "divbreadcrumb" au format html.Selenium webdriver retourne string.Empty pour le texte de fil d'ariane (IwebElement) lorsqu'il est déployé sur TFS

Ex: Si je navigue de page d'accueil (Home) à la page Réservations (réservations), la navigation est comme ci-dessous:

Accueil> Réservations

Je souhaite automatiser mes tests de fil d'Ariane et Vérifiez le texte du fil d'Ariane affiché sur la page par rapport au texte de fil d'Ariane réel qu'il devrait être. J'essaye de réaliser cela en employant le sélénium Webdriver avec des outils d'ATDD à savoir Specflow/SpecRun et Nunit en utilisant le code comme mentionné ci-dessous. Maintenant, quand j'essaye d'exécuter le test sur ma machine locale, ça marche bien mais quand j'inscris le code dans TFS et le compile, le VS Test Runner échoue parce qu'il ne trouve pas le texte de l'élément IwebElement ou il renvoie le texte sous la forme String.Empty. Maintenant, le même test, lorsqu'il est exécuté sur ma machine locale, fonctionne parfaitement bien en donnant les résultats de test attendus et les valeurs attendues pour mon Iwebelement (pour le fil d'Ariane). De plus, la structure HTML du fil d'Ariane ci-dessus est rendue au backend, ce que je peux dire parce que j'ai essayé de voir le HTML rendu en utilisant la propriété pagesource de webdriver à l'exécution et l'afficher dans mon message Exception.

Aussi, mon back-end code HTML est affiché comme:

 <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 le code que je l'ai utilisé dans mon script d'automatisation pour vérifier le texte venant de fil d'Ariane sur la page:

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

l'erreur que je reçois est

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

La duplication possible de [Webdriver Selenium renvoie String.Empty pour le texte de fil d'Ariane Iwebelement lors du déploiement sur TFS] (http://stackoverflow.com/questions/36305151/selenium-webdriver-returns-string-empty-for-breadcrumb-text -iwebelement-when-dep) – Andersson

+0

@Andersson - oui. Je voulais apporter des modifications à mon autre question ci-dessus et je pensais que cela modifierait ma question, mais il l'a copié dans une nouvelle question. J'ai supprimé la question ci-dessus car ce post contient toutes les informations que je pourrais partager concernant mon problème/erreur. – Anchit

Répondre

0

C'était ma première question que j'ai posté sur Stachoverflow et je suis heureux que je puisse trouver la raison à cause de laquelle il donnait l'erreur lors du déploiement sur TFS. C'est parce que quand l'application était exécutée sur le serveur TFS, même si le HTML était généré à l'arrière mais qu'il n'était pas affiché (peut-être parce que le TFS exécute l'application en basse résolution et qu'il était difficile à résoudre) et l'application était sensible à cacher le fil d'Ariane. Donc, même si le code HTML était rendu, l'outil sélénium ne peut trouver que l'élément mais sa valeur serait un texte vide jusqu'à ce que l'élément soit visible à l'extrémité avant. nous devons vérifier si l'élément est visible ou non, puis essayer d'afficher l'élément pour récupérer sa valeur.

Cela a résolu mon erreur ci-dessus.

0

Quand je regarde votre HTML, il semble que le texte ne relat ed à votre objet breadcrumb. La recherche que vous utiliserez trouvera le <div> mais le texte semble être attaché à un enfant <a> de ce div.
Vous pouvez utiliser la méthode Find pour obtenir le bon enfant, ou vous pouvez essayer la propriété textContent du div.

Les différences entre votre exécution locale et TFS peuvent probablement s'expliquer par différentes versions de IE et/ou OS.