2017-06-01 4 views
1

Ich mache ein C# -Projekt mit Selen. und ich muss prüfen, ob ein Element existiert?Wenn sonst Bedingung in Selen C#

für ein Beispiel

var userNameField = driver.FindElementById("id_email"); 
userNameField.SendKeys("xxxxx"); 

wenn die Benutzernameauszuwählen nicht in der Webseite vorhanden ist, müssen einige Code nicht funktionieren und anderes Teil muss arbeiten .. ist es irgendwelche Vorschläge ..?

+0

Verwenden Sie "Versuch fangen". Setzen Sie Ihren "else" -Teil in "catch" fort. –

+0

es funktioniert auf Versuch fangen –

+0

, aber ich warte auf mehr mögliche Vorschläge –

Antwort

2

Anstatt FindElementById zu verwenden, können Sie versuchen, FindElements aufzurufen. Dadurch erhalten Sie eine Liste mit allen möglichen Elementen, die Ihrer Suche entsprechen. Sie können dann testen, ob diese Liste leer ist oder nicht, und den entsprechenden Code abhängig von der Antwort ausführen.

List<WebElement> rows = driver.FindElements(By.Id("id_email")); 
if(rows.Count > 0) 
{ 
    // The element exists. You can work with it. 
    rows.First().SendKeys("xxxxx"); 
} 
else 
{ 
    // The element doesn't exist. 
} 
+0

danke für die hilfe –

+0

es funktioniert gut –

1

Sie können einen Versuch fangen, um dies zu arbeiten. Wenn der Webtreiber kein Element findet, wird eine NoSuchElementException ausgelöst.

IWebElement userNameField = null; 
try 
{ 
    userNameField = driver.FindElementById("id_email"); 
} 
catch(NoSuchElementException e) 
{ 
    // If you are creating a unit test 
    Assert.Fail("Element "userNameField" not found.") 
} 

// If you just want the if: 
if(userNameField != null) 
{ 
    userNameField.SendKeys("xxxxx"); 
} 
else 
{ 
    // do your thing 
} 
+0

danke für die suggestion .. –

+0

es funktioniert gut auf Try fangen –