【发布时间】:2011-11-07 14:44:11
【问题描述】:
我在尝试使用 Selenium WebDriver 测试我们的应用程序时发现了一个问题。问题在于 IE9 中的不稳定弹出窗口。它并不总是可重现的,它发生在大约 20% 的窗口切换中,但几乎不可能在 IE 上进行测试。在 FireFox 中一切正常。
- 我尝试增加超时时间:
TimeSpan interval = new TimeSpan(0, 0, 10);
driver.Manage().Timeouts().ImplicitlyWait(interval);
-
创建自己的对象查找方法:
for (int x = 0; x <= waitTimeOut; x++) { try { element = (IWebElement)driver.FindElement(By.XPath(obj.Xpath)); return element; } catch{} } 尝试使用 CssSelecotrs
-
尝试在找到元素之前进行一些重新切换:
driver.SwitchTo().Window(GetWindowHandle(2, 1)); driver.SwitchTo().Window(GetWindowHandle(0, 1)); driver.SwitchTo().Window(GetWindowHandle(2, 1));
如果出现问题,它总是只发生在我尝试在页面上找到的第一个元素上。如果找到该元素,则在此页面上查找其他元素没有任何问题。所以我认为问题在于专注。
调试器中的 Windows 句柄正确显示。例如,如果我切换到第三个窗口, driver.CurrentWindowHandle 会给我第三个窗口的正确句柄。但是,如果我尝试查找任何元素,FindElement() 会抛出异常。页面已加载,我可以手动单击元素但 FindElement() 找不到它。如果我重新运行测试,这一步可以毫无问题地通过,并且只会在下一次切换或更长时间时失败。这是不可预测的。
出现这种问题的原因是什么?
【问题讨论】:
-
您使用的是什么版本的 Selenium?我曾经只在 IE 上遇到过类似的问题,我必须通过在 SwitchTo 命令后添加 1000-5000 毫秒的睡眠来解决此问题。
标签: java internet-explorer selenium webdriver