【问题标题】:Selenium c#: Wait Until Element is Present Without Waiting the Time Given, Else Time OutSelenium c#:等到元素存在而不等待给定的时间,否则超时
【发布时间】:2017-10-17 17:20:04
【问题描述】:

为了进一步解释,我目前正在使用 selenium 和 c#。我的问题是,我的工具运行速度非常快,无需等待元素准备就绪。

Thread.Sleep() 例如是不可取的。

给定的等待时间为 2 秒。该元素将在 1 秒或更多秒内出现。在Thread.Sleep() 之后,所以代码行不可靠。

或者元素存在但仍在等待完成Thread.Sleep(),因此很耗时。

我想要的是,如果找到元素,则无需在给定时间等待,如果在给定时间未找到,则超时。

【问题讨论】:

    标签: c# selenium selenium-webdriver element wait


    【解决方案1】:

    这正是explicit waitexpected conditions 的用途。

    使用示例

    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));
    IWebElement element = wait.Until(ExpectedConditions.ElementIsVisible(By locator));
    

    这将等待 向上 到 5 秒以使元素可见。如果成功则返回元素,否则将抛出TimeoutException

    更新

    ExpectedConditions 已移动,现在位于SeleniumExtras.WaitHelpers

    'ExpectedConditions' 已过时:'The ExpectedConditions .NET 绑定中的实现已弃用并将被删除 在未来的版本中。这部分代码已经迁移到 GitHub 上的 DotNetSeleniumExtras 存储库 (https://github.com/DotNetSeleniumTools/DotNetSeleniumExtras)'

    为避免对现有代码进行许多更改,将ExpectedConditions 导入到名为ExpectedConditions 的变量中。其余代码保持不变

    using ExpectedConditions = SeleniumExtras.WaitHelpers.ExpectedConditions;
    

    【讨论】:

    • ExpectedConditions 现已弃用。您对此有任何替代解决方案吗?
    猜你喜欢
    • 2012-06-14
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 2018-02-12
    • 1970-01-01
    • 2019-07-09
    相关资源
    最近更新 更多