Selenium显式等待

时间:2014-03-23 01:31:57

标签: selenium selenium-webdriver webdriver

我正在尝试自动化基于sharepoint的应用程序,有时可能会很慢。在下面的示例中,我尝试将密码输入包装到显式等待中。目前,Selenium会快速运行测试,导致无法执行操作。

如何将密码部分包装成selenium显式方式?

    // Enter username
        var input_Username = Driver.Instance.FindElement(By.Id("username_input"));
        input_Username.SendKeys("admin");

        WebDriverWait wait = new WebDriverWait(Driver.Instance, TimeSpan.FromSeconds(3000));


        // Enter pasword

        var input_Password = Driver.Instance.FindElement(By.Id("pw_input"));
        input_Password.SendKeys("password");

1 个答案:

答案 0 :(得分:2)

是的,你走在正确的轨道上。

WebDriverWait实例已创建,现在您只需要像这样调用它:

WebDriverWait wait = new WebDriverWait(Driver.Instance, TimeSpan.FromSeconds(3000));

var input_Password = wait.Until(d=> d.FindElement(By.Id("pw_input")));
input_Password.SendKeys("password");

有关详细信息,请参阅C#API doc。相关的类位于OpenQA.Selenium.Support.UI命名空间下,其中有一个ExpectedConditions类,非常方便。

var input_Password = wait.Until(ExpectedConditions.ElementExists(By.Id("pw_input")));

另请注意,您的代码将超时设置为3000秒,似乎太长了。