use*_*772 6 c# unit-testing wait selenium-webdriver
我是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();
}
Run Code Online (Sandbox Code Playgroud)
有时它无法找到登录详细信息,因为弹出窗口未正确加载,有时无法找到同步按钮,因为Facebook帐户需要时间链接.请指教.
Vic*_*cky 19
WebDriverWait wait = new WebDriverWait(driver,30); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id( "定位器")));
如果在执行之前找到该元素,它将等待元素定位最多30秒....
| 归档时间: |
|
| 查看次数: |
41065 次 |
| 最近记录: |