Selenium C#Webdriver,试图在关闭之前等待所有操作完成

时间:2016-02-15 15:56:33

标签: c# selenium-webdriver

我正在使用Selenium Web驱动程序版本2.48.2。

我的问题是,我想等待最后一个网址加载,然后拍摄我的屏幕截图并关闭浏览器和驱动程序。

因此,如果我调试会话,我可以看到我的所有方法都被立即调用,而不是等待浏览器加载,这是一个问题因为如果我在最后一行代码上有我的Quit()方法浏览器立即关闭,并且不会贯穿每个步骤。

如果我删除了Quit()方法,浏览器将按预期运行我的所有场景。

那么有没有办法让驱动程序等到浏览器完成所有步骤?

非常感谢任何帮助。

1 个答案:

答案 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()

测试新元素