2016-05-11 17 views
1

なぜ、このSelenium C#コードは、要素が読み込まれるまで待たないのですか?Selenium wait/sleepコマンド

_fireFoxWebDriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(1000)); 

私が代わりにThread.Sleep(5000); を使用していないどちらもそれはありません!誰かが私にこれを説明することができます!

答えて

3

Thread.Sleep(5000)を使用すると、テストは5秒間待ってから実行を戻します。要素が存在しないか表示されていない間、要素を待つ必要がある場合は、WebDriverWaitを使用します。例:

var timeout = 10000; // in milliseconds 
var wait = new WebDriverWait(Driver, TimeSpan.FromMilliseconds(timeout)); 
wait.Until(ExpectedConditions.ElementIsVisible(By.CssSelector("your-selector"))); 

はまた、ページのロードを待つ必要があれば、あなたはコードを使用することができます。いずれの場合も

var timeout = 10000; // in milliseconds 
var wait = new WebDriverWait(Driver, TimeSpan.FromMilliseconds(timeout)); 
wait.Until(d => ((IJavaScriptExecutor)d).ExecuteScript("return document.readyState").Equals("complete")); 

を、10秒の要素を見つけるための制限時間です。この時点で要素が1つも見つからなければ、テストは失敗します。それ以外の場合、要素が5秒以内に見つかった場合、コードは残りの秒間待機しません。次のコード行に進みます。

この種の要素は、要素を見つけるために必要な時間だけ待つ必要がないため、便利です。

我々は要素がクリック可能な手段であるべきまで待ちたい場合は時々、私たちはWebDriverWait方法以下使用することができます
0

例えば:wait.until(ExpectedConditions.elementToBeClickable(要素))

WebElement ele=driver.findElements(By.xpath("your xpath")); 
WebDriverWait wait =new WebDriverWait(driver, 50); 
wait.until(ExpectedConditions.elementToBeClickable(ele)); 
関連する問題