【发布时间】:2021-07-10 21:10:03
【问题描述】:
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
driver.FindElement(By.XPath(".//*[@class = 'search-box']")).SendKeys("Samsung");
Console.WriteLine("confirm!");
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
driver.FindElement(By.XPath(".//*[@class = 'search-icon']")).Click();
Console.WriteLine("confirm!");
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
driver.FindElement(By.ClassName("fvrt-btn")).Click();
Console.WriteLine("confirm!");
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
driver.FindElement(By.XPath(".//*[@class = 'link-text']/div/div/div/div[a]/div/div/div")).Click();
Console.WriteLine("confirm!");
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
driver.FindElement(By.ClassName("ufvrt-btn")).Click();
Console.WriteLine("confirm!");
// 此行无效,测试脚本未在特定页面等待。 driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
【问题讨论】:
-
ImplicitWait用于等待 x 秒以在当前页面上找到元素。您正在对多个元素执行.Click,其中一些元素可能会导航到另一个页面。所以,简而言之,ImplicitWait不会阻止浏览器导航。 -
看起来您可能需要等待页面加载才能执行某些代码块,您可以在此处阅读有关等待页面加载的更多信息wait for page load in selenium
-
谢谢我会检查它
-
ImplicitWait应该只在你的代码中定义一次,而不是每次你想找到一个元素。您将ImplicitWait与ExplicitWait的用法混合在一起 -
@JD2775 有时需要更改隐式等待期,但在极少数情况下。一般来说是正确的,隐式等待在项目开始时定义一次。