我正在使用Selenium Web驱动程序版本2.48.2。
我的问题是,我想等待最后一个网址加载,然后拍摄我的屏幕截图并关闭浏览器和驱动程序。
因此,如果我调试会话,我可以看到我的所有方法都被立即调用,而不是等待浏览器加载,这是一个问题因为如果我在最后一行代码上有我的Quit()方法浏览器立即关闭,并且不会贯穿每个步骤。
如果我删除了Quit()方法,浏览器将按预期运行我的所有场景。
那么有没有办法让驱动程序等到浏览器完成所有步骤?
非常感谢任何帮助。
答案 0 :(得分:0)
这实际上取决于发生了什么。最好的方法是使用显式等待http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp
等待元素出现在屏幕上IWebDriver driver = new FirefoxDriver();
driver.Url = "http://somedomain/url_that_delays_loading";
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement myDynamicElement = wait.Until<IWebElement>((d) =>
{
return d.FindElement(By.Id("someDynamicElement"));
});
如果无法做到这一点,您可以尝试使用
将javascript注入页面setTimeout(functionThatAddsAnElementToTheDom,1);
这将在您的其他进程完成后运行,您可以使用Wait.Until()
测试新元素