2016-08-30 17 views
1

ここに、Firefoxブラウザ用のセレンウェブドライバの初期化があります。Selenium Webdriverが要素を待っていません

driver = new FirefoxDriver(); 
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS); 

要素を待たずに暗黙の待機セレンを与えたとしても。すぐに見つからない例外がスローされています。もし私がThread.sleepを入れたら、それは何の問題もなくうまくいきます。しかし、どこにでもThread.sleepを置くと、実際のテストケースコードより多くのThread.sleepが含まれています。誰も私にこれを行う正しい方法を提案することはできますか?

+0

あなたの代わりに 'WebDriverWait'を使用して' ExplicitWait'を使用していないのはなぜ? –

+0

優先する方法は明示的な待機ですが、上記の問題は問題なく動作するはずです。パブリックURLでこの問題を再現できますか? –

+0

@ MurunalGosar私は公共のURLで眠ることなく同じことを試みました。うまく動作します。私のローカルでは、エラーが発生しています – Rajesh

答えて

1

この場合、ExplicitWaitを使用して、特定の要素が表示または存在するのを待つ必要があります。なぜなら、スレッドをスレーブするのは良い方法ではないからです。私が使用することをお勧めします:

WebDriver driver wait = new WebDriverWait(driver, "time here"); 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xPath))); 
関連する問題