我正在尝试自动化基于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");
答案 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秒,似乎太长了。