【问题标题】:Selenium wait issue硒等待问题
【发布时间】:2017-12-27 23:08:21
【问题描述】:

我有一个输入框,可以拉出一个自动完成列表。列表拉起来有点慢,所以我需要 selenium 在按下回车键之前等待,这将选择列表中的第一项。这是我到目前为止所拥有的

            webDriver.FindElement(By.Id("seg-gl-1")).SendKeys("2");
            webDriver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
            webDriver.FindElement(By.Id("seg-gl-1")).SendKeys(Keys.Enter);

问题是 selenium 击中 Enter 太快了。我相信我错误地使用了implicitwait。谁能解释一下我的问题?

【问题讨论】:

  • 为了澄清,您设置的隐式等待被所有后续 FindElement 调用等使用。如果您设置为 10 秒 ImplicitWait,这意味着 webdriver 将在抛出 ElementNotFoundException 之前尝试查找元素 10 秒。

标签: c# selenium


【解决方案1】:

当你使用

webDriver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);

您只是在设置默认的 ImplicitWait 时间。如果您想实际执行等待,比如说 10 秒,您可以使用

System.Threading.Thread.Sleep(5000);

通常您应该避免这种类型的等待,但我猜测在您的应用程序的后台执行了 javascript/ajax 调用,因此您应该等待这些调用在能够断言站点行为之前执行(因为这些调用可能会更新 DOM 等)。如需进一步帮助,请参阅我在此线程中的回答:https://stackoverflow.com/a/45033412/6220192

【讨论】:

    猜你喜欢
    • 2015-06-13
    • 2019-02-19
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多