我在C#上使用selenium webdriver,我正在使用页面对象模块。现在我需要在显式等待中使用语法,因为我已经掌握了webelement。
[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.driver, TimeSpan.FromSeconds(Time));
wait.Until(ExpectedConditions.ElementExists(by));
现在我需要手边使用Element。
答案 0 :(得分:4)
您应该尝试使用ExpectedConditions.ElementToBeClickable
接受IWebElement
以及输入,并等到元素可见并启用如下: -
WebDriverWait wait = new WebDriverWait(driver.driver, TimeSpan.FromSeconds(Time));
wait.Until(ExpectedConditions.ElementToBeClickable(Password));
答案 1 :(得分:1)
请检查是否有帮助
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(driver => Password.Displayed);
答案 2 :(得分:0)
添加显式等待并等待Password.Displayed
为真:
[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);
完全披露,我在这里找到答案:https://groups.google.com/forum/#!topic/webdriver/xdFsocNMSNc
答案 3 :(得分:0)
预期条件方法以By
为参数,您希望使用ElementIsVisible
,即以下方法应该有效:
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.ElementIsVisible(By.Id("Passwd")));