C# 硒等待问题

C# 硒等待问题,c#,selenium,C#,Selenium,我有一个输入框,可以自动完成列表。列表拉起来有点慢,所以我需要selenium在按下enter键之前等待,这将选择列表中的第一项。这是我到目前为止所拥有的 webDriver.FindElement(By.Id("seg-gl-1")).SendKeys("2"); webDriver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10); webDriver

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

            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的输入速度太快了。我认为我没有正确使用
隐式等待
。有人能解释一下我的问题吗?

当你使用

webDriver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
您仅设置默认隐式等待时间。如果您想实际执行等待,比如说10秒,您可以使用

System.Threading.Thread.Sleep(5000);

一般来说,您应该避免这种类型的等待,但我猜在应用程序的后台会执行javascript/ajax调用,因此您应该等待这些调用执行,然后才能断言站点行为(因为这些调用可能会更新DOM等)。有关这方面的进一步帮助,请参阅我在本线程中的回答:

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