2016-10-11 2 views
0

Ich benutze Selen-Webdriver über C# und ich benutze Seite Objektmodul. Jetzt brauche ich eine Syntax, um explizit zu warten, da ich das Webelement bereits in der Hand habe.Explizite warten Selenium Webdriver für Element in der Hand

[FindsBy(How = How.Id, Using = "Passwd")] 
public IWebElement Password {get;set;} 

[FindsBy(How = How.Id, Using = "signIn")] 
public IWebElement Signin { get; set; } 

Ich muss warten, bis ich das Element Password finde.

Vor Verwendung dieses Moduls war ich mit:

WebDriverWait wait = new WebDriverWait(driver.driver, TimeSpan.FromSeconds(Time)); 
wait.Until(ExpectedConditions.ElementExists(by)); 

Jetzt muß ich das Element in der Hand verwenden.

Antwort

4

Sie sollten versuchen,verwendendie IWebElement sowie Eingabe akzeptieren würde und warten, bis Element sichtbar und ermöglicht wie folgt: -

WebDriverWait wait = new WebDriverWait(driver.driver, TimeSpan.FromSeconds(Time)); 
wait.Until(ExpectedConditions.ElementToBeClickable(Password)); 
+0

ElementToBeClickable wird in den erwarteten Bedingungen nicht akzeptiert. es gibt ......... 'OpenQA.Selenium.Support.UI.ExpectedConditions' enthält keine Definition für 'ElementToBeClickable –

+0

Sie können diesen Link für C# Dokumente sehen, https://seleniumhq.github.io/ selen/docs/api/dotnet/html/M_OpenQA_Selenium_Support_UI_ExpectedConditions_ElementToBeClickable_1.htm wird von 'ExpectedConditions' unterstützt. Ich bin seltsam, warum bekommen Sie Fehler –

+0

Welche Version des Selens verwenden Sie ?? –

0

eine explizite Warteliste und warten Password.Displayed um wahr zu sein:

[FindsBy(How = How.Id, Using = "Passwd")] 
public IWebElement Password {get;set;} 

[FindsBy(How = How.Id, Using = "signIn")] 
public IWebElement Signin { get; set; } 

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 
wait.Until(Password.Displayed); 

vollständige Offenlegung, fand ich die Antwort hier: https://groups.google.com/forum/#!topic/webdriver/xdFsocNMSNc

+0

Nicht mit meiner Arbeit gibt es Syntaxfehler! –

0

Die Bedingungen erwartet Methoden nehmen By als Argument und Sie wollen Verwenden Sie ElementIsVisible, dh die folgenden sollten funktionieren:

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 
wait.Until(ExpectedConditions.ElementIsVisible(By.Id("Passwd"))); 
Verwandte Themen