在Selenium中使用Timer类c#
本文关键字:Timer Selenium | 更新日期: 2023-09-27 17:53:45
我使用Selenium登录到一个网页,并得到什么将是该网站的"主页"。在大多数情况下,我使用调用:
IWebDriver driver = new FirefoxDriver;
driver很早就声明过了,但是我把它放在这里作为参考。
diver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(<insert time here>);
通常,这将是我所需要的,然后代码将做我想要它做的事情。但是,在这种情况下,登录页面要经过几个不同的"http://..."链接,因此等待页面加载是不够的,因为它要经过许多链接。我知道我需要使用Timer类来等待最后一个链接,但不太确定如何正确使用它。有人能解释如何正确使用定时器()类来获得我想要的结果吗?
您可以使用WebDriverWait
对象测试单个操作的计时。
try
{
var wait = new WebDriverWait(YourWebDriverInstance, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(driver => driver.FindElement(By.Name("q")));
}
catch (WebDriverTimeoutException ex)
{
// handle timeout
}
我发现了一个我最初忽略的解决方案。我在这里张贴它的任何人谁也可能会遇到这个问题在未来,并找到这个线程。这段代码可以工作,但它非常具体,不是最好的解决方案。
Thread.Sleep(TimeSpan.FromSeconds(30));
这将使线程/脚本停止运行30秒。在我的情况下,它可以工作,因为我的互联网速度足够快,但它不是理想的,因为页面可能需要超过30秒的加载时间,导致代码崩溃。如果有人有建议,我仍然愿意接受。