gpt4 book ai didi

c# - 如何在 Selenium 中结合隐式和显式超时?

转载 作者:太空宇宙 更新时间:2023-11-03 12:10:13 24 4
gpt4 key购买 nike

我正在使用带有隐式超时的 Selenium ChromeDriver:

_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);

在我的一个测试中,我想用一个明确的超时来覆盖它。在读取属性之前,我明确地等待元素被找到:

WebDriverWait wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(120));
wait.Until(d => d.FindElement(By.CssSelector("div.example")));

我预计这将花费 120 秒来尝试找到该元素,但它仅在 5 秒后超时。

最佳答案

根据 Explicit and Implicit Waits 的文档明确提到:

Do not mix implicit and explicit waits. Doing so can cause unpredictable wait times. For example setting an implicit wait of 10 seconds and an explicit wait of 15 seconds, could cause a timeout to occur after 20 seconds.

仍然,如果您将隐式超时定义为:

_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);

关于c# - 如何在 Selenium 中结合隐式和显式超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52706693/

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