2017-09-18 4 views
1

Ich bin neu zu Selenium und C# und einen automatisierten Test erstellen, wodurch ich etwas erstellen und löschen Sie es sofort (alle im selben Test).Selen C# - Warten auf Text nicht sichtbar zu sein scheint aber nicht zu funktionieren

Der letzte Schritt in meinem Test ist zu überprüfen, dass der Name des Elements, das ich gelöscht habe, nicht mehr sichtbar ist - hier stehe ich fest.

Ich bin in einem modalen Dialog und das Element ist im Hintergrund sichtbar. Wenn ich das Löschen im modalen Dialog bestätige, ist der nächste Schritt, dass der Name des Elements nicht mehr sichtbar ist, aber der Code sieht das name und daher löst eine Ausnahme aus, weil es wahr ist statt meines erwarteten Ergebnisses von false.

Siehe unter dem Code Ich verwende:

public bool DeletedCategoryNoLongerVisible(string CategoryDisplayName) { 
    try { 
    WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(20)); 
    wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id='10_anchor']"))); 
    Driver.FindElement(By.XPath($ "//*[@class='jstree-anchor'][text()='{CategoryDisplayName}']")); 
    return false; 
    } catch (Exception) { 
    return true; 
    } 
} 
+0

Sie tryi ng, um das Element oder den Text zu überprüfen? Ist das Element tatsächlich gelöscht oder ist es nur der Text? – IamBatman

+0

@IamBatman, der Text wurde gelöscht, also möchte ich das überprüfen. Das ElementToBeClickable, das ich angegeben habe, ist eine Schaltfläche, die hinter dem Modal steht, aber das scheint nicht zu helfen. –

+0

Also ist es der Text auf einer Schaltfläche oder in einem Eingabefeld? Wie auch immer, warum greifen Sie nicht den Text aus dem Element und machen einen bedingten? Wenn es nicht existiert, mach das, sonst tu das. – IamBatman

Antwort

0

Sie können warten die gezielte Element fehlt oder für seine angezeigten Text leer sein, um mit InvisibilityOfElementWithText:

new WebDriverWait(Driver, TimeSpan.FromSeconds(20)) 
    .Until(ExpectedConditions.InvisibilityOfElementWithText(By.XPath(...), CategoryDisplayName)); 

Und wenn das Element wird mit einem anderen Element darüber ausgeblendet, dann versuchen Sie, es zu klicken, bis es scheitert:

Verwandte Themen