我是selenium webdriver的新手,正在测试一个应用程序。在我的应用程序中,我需要测试关联Facebook账户。每当我点击链接时,将显示弹出窗口,在那里我必须输入凭据。有时我能够成功关联,有时测试失败。我知道原因是因为它需要时间加载弹出窗口,而下一条命令被执行,因此无法找到元素。我已经使用了Thread.Sleep,但我想使用隐式等待或显式等待,这总是比Thread.Sleep更好的做法。如何使用隐式等待,并在哪里使用该命令?请给予建议。谢谢。
public void SocialFaceBook()
{
string currentWindow = driver.CurrentWindowHandle;
PopupWindowFinder finder = new PopupWindowFinder(driver);
string facebookWindow = finder.Click(driver.FindElement(By.XPath("//div[@id='panelFacebook']/div[2]/div[3]/div[3]/a")));
// Switch To FaceBook Window
driver.SwitchTo().Window(facebookWindow);
System.Threading.Thread.Sleep(3000);
// Link
// Email Address
IWebElement faceBookLinkEmail = driver.FindElement(By.Id("email"));
faceBookLinkEmail.SendKeys(SocialFaceBookEmail);
// Password
IWebElement faceBookLinkPass = driver.FindElement(By.Id("pass"));
faceBookLinkPass.SendKeys(SocialFaceBookPass);
// Log In Button
IWebElement faceBookLinkLogin = driver.FindElement(By.XPath("//input[@id='u_0_1']"));
faceBookLinkLogin.Click();
// Switch To Main Window
driver.SwitchTo().Window(currentWindow);
System.Threading.Thread.Sleep(3000);
// Sync
IWebElement faceBookSync = driver.FindElement(By.XPath("//div[@id='panelFacebook']/div[2]/div[3]/div[2]/a"));
faceBookSync.Click();
// Unlink
IWebElement faceBookUnLink = driver.FindElement(By.XPath("//div[@id='panelFacebook']/div[2]/div[3]/div[1]/a"));
faceBookUnLink.Click();
}
有时候弹出窗口加载不完全,导致找不到登陆信息;有时候因为脸书账号链接需要时间,所以无法找到同步按钮。请给予建议。