根据显式和隐式等待的文档,明确提到:
不要混合隐式和显式等待。这样做会导致无法预料的等待时间。例如,设置 10 秒的隐式等待和 15 秒的显式等待,可能会导致 20 秒后发生超时。
如果您将隐式超时定义为:
_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
在诱导显式等待找到元素之前,您需要删除隐式超时,如下所示:
_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(0);
WebDriverWait wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(120));
wait.Until(d => d.FindElement(By.CssSelector("div.example")));
完成显式等待后,您可以再次将隐式超时重新配置为:
_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(0);
WebDriverWait wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(120));
wait.Until(d => d.FindElement(By.CssSelector("div.example")));
//perform your action with the element
_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);