显式等待Selenium Webdriver手中的元素

时间:2016-10-11 10:26:04

标签: c# selenium

我在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。

4 个答案:

答案 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")));