Selenium C# Webdriver,尝试等到所有操作完成后再关闭

本文关键字:操作 Webdriver Selenium | 更新日期: 2023-09-27 18:34:37

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

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

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

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

那么有没有办法让司机等到浏览器完成我所有步骤的操作?

任何帮助都非常感谢。

Selenium C# Webdriver,尝试等到所有操作完成后再关闭

这真的取决于正在发生的事情。 最好的方法是使用显式等待 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(( 测试新元素