首页 > 代码库 > Selenium Waits

Selenium Waits

Selenium高级功能包含查找等待, Selenium的查找等待有两种方式, 隐式等待(Implicit Waits)和显示等待(Explicit Waits): 这里写下我对两者的理解,

1. 隐式等待, 作用域全局, 在Web Driver 的整个生命周期都起作用, web driver的每一个操作,例如查找元素, 如果找不到对应元素就设置一个等待时间,在这个等待时间之内,每隔500毫秒就轮询一次,直至找到元素或是超时。

            OpenQA.Selenium.Chrome.ChromeDriver _chrDriver = new OpenQA.Selenium.Chrome.ChromeDriver();            _chrDriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));            _chrDriver.Navigate().GoToUrl("http://www.baidu.com");

注:使用隐式等待会导致整个测试过程变的很慢。

2. 显示等待, 作用域当前操作, 设置一个超时时间和期待条件, 在这个超时时间只能,每隔500毫秒轮询,如果期待条件满足就返回, 直至超时。这个超时会抛异常出来的。

            OpenQA.Selenium.Chrome.ChromeDriver _chrDriver = new OpenQA.Selenium.Chrome.ChromeDriver();            _chrDriver.Navigate().GoToUrl("http://www.baidu.com");            OpenQA.Selenium.IWebElement we = (new OpenQA.Selenium.Support.UI.WebDriverWait(_chrDriver,TimeSpan.FromSeconds(10))                .Until<OpenQA.Selenium.IWebElement>((d)=>{return d.FindElement(OpenQA.Selenium.By.Id("kw"));}));            we.SendKeys("Hello");            _chrDriver.Quit();

 

Selenium Waits