gpt4 book ai didi

c# - 如何等待元素加载到 selenium webdriver 中?

转载 作者:太空狗 更新时间:2023-10-29 20:46:36 27 4
gpt4 key购买 nike

我是 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();
}

有时无法找到登录详细信息,因为弹出窗口未正确加载,有时无法找到同步按钮,因为 facebook 帐户需要时间链接。请指教。

最佳答案

WebDriverWait wait = new WebDriverWait(driver, 30); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("locator")));

如果在执行之前找到元素,它将等待元素定位最多 30 秒....

关于c# - 如何等待元素加载到 selenium webdriver 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25374382/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com