【问题标题】:How to delay or wait in c# for selenium script?如何在 c# 中延迟或等待 selenium 脚本?
【发布时间】:2015-11-01 20:17:16
【问题描述】:

我正在编写一个脚本来使用 C# 和 selenium 测试一个网站。我遇到了一个问题,即页面没有立即加载所有元素,因此我的代码产生了元素不存在的错误异常。有没有办法让我的代码暂停并等待所有元素加载,或者设置一个固定的等待时间?

我尝试了一些类似的方法:

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2));

但我认为它不起作用。

【问题讨论】:

    标签: c# selenium selenium-webdriver delay wait


    【解决方案1】:

    固定等待时间根本不可靠。相反,您询问的是Explicit Wait functionality - 明确等待满足某些预期条件 - 例如,等待特定元素出现或可见。示例:

    IWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(3))
    IWebElement element = wait.Until(driver => driver.FindElement(By.Name("q")));
    

    在此示例中,selenium webdriver 将等待 最多 3 秒,让 name="q" 的元素出现,每 500 毫秒检查一次它的存在(默认情况下)。

    【讨论】:

    • 这仍然不适合我。我必须使用任何特殊的“...”吗?
    • @omnibored 显式等待应该适合你——你只需要小心地选择一个元素/条件来等待。不知道在这里添加更多内容。
    猜你喜欢
    • 1970-01-01
    • 2015-10-13
    • 2021-01-10
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    相关资源
    最近更新 更多