2017-11-15 3 views
0

Ich möchte warten auf ein Element sichtbar sein, wo der Text = "Gutscheine per Post". Wenn ich jedoch das Folgende versuche, erhalte ich eine
kann nicht void als implizite Variable zuweisen und kann nicht von OpenQA.Seleinium.By zu OpenQA.Seleinium.ISearchContent konvertieren.Wie ein Element zu überprüfen ist unsichtbar über seinen Text

Was ich tun müssen, die unten zu beheben tun:

 public bool CheckBasketHolidayVoucherTextIsNotPresent(string basketLocation) 
    { 
     var topBasketItems = _driver.FindElements(CommonPageElements.TopBasketItems); 
     var bottomBasketItems = _driver.FindElements(CommonPageElements.BottomBasketItems); 

     var basketItems = basketLocation.ToLower() == "top" ? topBasketItems : bottomBasketItems; 

     By selector = basketLocation.ToLower() == "top" ? 
      CommonPageElements.TopBasketItems : 
      CommonPageElements.BottomBasketItems; 

     var test = _driver.WaitToBeInvisible(selector.FindElements(CommonPageElements.TopBasketItems).Text.Contains("Vouchers by post"), 5); 
     return test.All(b => b.Text != "Vouchers by post"); 
    } 
+0

Bitte geben Sie Ihren HTML-Code an. –

Antwort

0

Nachdem die Position Ihres Artikels zu kennen (By), erstellen Sie eine Methode das wird versuchen, zu warten, bis Ihr Element für 0 Sekunden (Sofortiger prüfen, ob es irgendein Element auf der Seite) angezeigt werden, etwa so:

public bool isElementVisible(By locator) 
{ 
    try 
    { 
     new WebDriverWait(driver, TimeSpan.FromSeconds(0)).Until(ExpectedConditions.ElementExists(locator)); 
     try 
     { 
      new WebDriverWait(driver, TimeSpan.FromSeconds(0)).Until(ExpectedConditions.ElementIsVisible(locator));    
     } 
     catch (WebDriverTimeoutException) 
     { 
      //Element exists but is not visible, return false or do other stuff 
      return false 
     } 
    } 
    catch (WebDriverTimeoutException) 
    { 
     //Element does not exist, return false or do other stuff 
     return false; 
    } 
    //If code reaches this point, element both exists and is visible 
    return true; 
} 

Sie können die TimeSpan-Sekunden oder Minuten einstellen, bis das Element so lange angezeigt wird, wie Sie möchten. Sie können wahrscheinlich eine Überladung machen, die das Timeout als Parameter annimmt, und die "Standard" -Funktion, die kein Timeout hat, ruft sich mit Timeout 0 auf.

Nach all dem können Sie einige Zeilen Code unten hinzufügen der Funktion, die den Text des Elements überprüft und zurückgibt, wenn es der gewünschte ist. Rückgabe der entsprechenden Werte

0

Versuchen Sie, auf diesem Code:

var wait = new WebDriverWait(_driver, new TimeSpan(0, 0, seconds)); 
wait.Until(ExpectedConditions.InvisibilityOfElementLocated(selector)); 
Verwandte Themen