【发布时间】:2015-12-16 06:51:19
【问题描述】:
我使用 selenium 有一段时间了,对 IWebElement Wait 过程有一些疑问。
我们有显式等待和隐式我使用它们并理解其含义但是..
我怎样才能让硒完全不等待元素?
我尝试不使用等待功能,但当我调用 FindElement 或 GoToUrl 时,它并不总是立即返回,有时仍等待 0 到 60 秒
我注意到大多数时候FindElement 中的等待没有返回元素并且无缘无故地等待。
例如:调用元素 id 可能需要 3 秒而不是立即(大量关闭调用大量时间...) 也许我做错了什么。
主要目的是完全控制程序并自己处理等待时间(以提高效率)
也许有更好的文章来了解寻找元素的硒架构? (不是硒 API)
(我使用的是最新版本的 selenium 2.48.0)
代码示例:
driver = new FirefoxDriver();
js = driver as IJavaScriptExecutor;
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(0));
driver.Manage().Window.Maximize();
driver.Navigate().GoToUrl("someUrl");
IList<IWebElement> loginFrame = driver.FindElements(By.TagName("iframe"));
driver.SwitchTo().DefaultContent().SwitchTo().Frame(loginFrame[0]);
driver.FindElement(By.Id("userID")).SendKeys("username");
driver.FindElement(By.Id("userPassword")).SendKeys("userPassword");
driver.FindElement(By.Id("login")).Click();
driver.SwitchTo().DefaultContent();
driver.FindElement(By.XPath("//div[@class='something']/ul/li[2]/a")).Click();
driver.FindElement(By.PartialLinkText("someText")).Click(); // *
- 最后在 3 ~ 5 秒后而不是立即调用它的抛出异常(当我将 Implicit 设置为 60 秒时,它会找到元素!)
【问题讨论】:
标签: c# .net selenium selenium-webdriver webdriver