2017-05-03 7 views
0

Wenn Sie auf die Website gehen, wenn Sie auf die Website gehen, kann der Button "Weiter" 2 Optionen haben: class = "button" oder class = "btn". Wie man sofort nach 2 Klassen in 1 FindElement sucht. Ich weiß nicht, wie es aussehen sollte, aber so (schematisch)C# FindElement ClassName Enumeration

IWebElement element = driver.FindElement(By.ClassName("button" or "btn")); 

Oder einfacher zu verwenden, wenn sonst?

IWebElement element18 = driver.FindElement(By.XPath("//div[contains(@class, 'button') or contains(@class, 'btn')]")); 

nicht.

Vielen Dank für die Aufmerksamkeit

+0

Mögliches Duplikat von [Find div Element nach mehreren Klassennamen?] (Http://stackoverflow.com/questions/21713280/find-div-element-by-multiple-class-names) –

+0

Nein, er findet nur ClassName . Xpath kann nicht gefunden werden. –

+0

Warum funktioniert XPath nicht? Ich meine, welche Ausnahme siehst du, Nullelement? – unickq

Antwort

1

Wenn XPath nicht funktioniert, kann so etwas schreiben:

public IWebElement GetElements(params By[] searchBy) 
{ 
    var list = new List<IWebElement>(); 
    foreach (var by in searchBy) 
    { 
     list.AddRange(driver.FindElements(by));    
    } 
    return list.Count == 1 ? list[0] : null; 
} 
0

Das ist wirklich einfach, eine CSS-Selektor ".button, .btn", oder wenn Sie mehr wollen spezifisch, "div.button, div.btn". Das Komma entspricht einem OR-Operator.

Verwandte Themen