2017-07-21 154 views
2

我有一個輸入框可以提取自動完成列表。這個列表有點慢,所以我需要硒等待,然後按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); 

問題是,硒正在輸入太快。我相信我錯誤地使用了implicitwait。任何人都可以談談我的問題嗎?

+0

爲了澄清,你設置的隱式等待被所有後續的FindElement調用等使用。如果設置爲10秒ImplicitWait,這意味着webdriver會在拋出ElementNotFoundException之前嘗試查找元素10秒。 –

回答

1

當您使用

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

你只設置默認ImplicitWait時間。如果你想爲實際執行的等待,可以說10秒,你可以使用

System.Threading.Thread.Sleep(5000); 

一般來說,你應該避免這種類型的等待,但我猜,有在後臺執行的JavaScript/AJAX調用你的應用程序,因此你應該等到這些執行之前能夠斷言網站的行爲(因爲這些調用可能會更新DOM等)。爲了進一步的幫助,請參考我的回答在這個線程:https://stackoverflow.com/a/45033412/6220192