2017-10-26 2 views
0

Ich habe ein Problem bei der Implementierung eines Warte- und Klickelements. Was mit dem unten stehenden Code passiert ist, dass ich alle Elemente einer Instanz finde und abhängig davon, ob ich nach dem oberen oder unteren Korb suche, gebe ich an, auf welches Element ich klicken möchte.Wie man warten und klicken nach dem Finden aller Elemente?

Das Problem ist, dass sich Selen zu schnell bewegt, dass es das Element zum Klicken nicht finden kann. Also statt

selectDiscountLink[0].Click(); 

or 

selectDiscountLink[1].Click(); 

Was ich wirklich tun möchte, ist eine WaitandClickElement-Methode verwenden. Das Problem ist, ich habe Mühe, dies zu implementieren, weil es zuerst nach allen Elementen sucht. Wenn ich dann ein einzelnes Element auswähle, habe ich nur die Option .click(). Was muss ich ändern, um alle Elemente zu finden und dann einen Warte- und Klick-Vorgang auszuführen?

public void OpenDiscountsMenu (string basketLocation) { var selectDiscountLink = _driver.FindElements (CommonPageElements.SelectDiscountsLink);

if (basketLocation.ToLower() == "top") 
     selectDiscountLink[0].Click(); 
    else 
     selectDiscountLink[1].Click(); 
} 

Antwort

0

Verwenden Sie ExplicitWait, bis alle Elemente sichtbar werden. einmal sichtbar dann weitere Aktionen

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromMilliseconds(20000)); 
wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(CommonPageElements.SelectDiscountsLink)); 

ausführen Also, wenn alle Ihre Elemente sind es dann die gleiche Wartezeit für einzelnes Element verwenden anklickbar zu sein wie

wait.Until(ExpectedConditions.ElementIsClickable(selectDiscountLink[0])); 
Verwandte Themen