Selenium2(2)
後続処理を止める
画面遷移を行う場合など、次画面の表示完了まで後続処理を止めたい場合
// フレーム内部が表示されるまで最大10秒待ち final long before = new Date().getTime() + 10000; (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { // 次の画面のタイトルが出たら処理続行 return d.getTitle().toLowerCase().startsWith("タイトル"); } });
フレーム間の移動
フレームのある画面でフレーム間を移動したい場合
// nameが"MENU"のフレームへ移動 driver.switchTo().frame("MENU"); // idが"top"のフレームへ移動 driver.switchTo().frame(By.id("top")); // 最初のフレームへ戻る driver.switchTo().defaultContent();
ポップアップ
ポップアップを開いてポップアップ画面へコントロールを移す場合
// 現在操作しているWindow IDを控える。 String currentWindowId = driver.getWindowHandle(); // ポップアップ表示 driver.findElement(By.linkText("ポップアップ表示")).click(); // ポップアップ表示まで待機 (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { // ポップアップが表示されるとWindowHandlesのサイズが増える return d.getWindowHandles().size() > 1; } }); // 増えたウィンドウIDを取得する。 String newWindowId = null; for (String id : driver.getWindowHandles()) { if (!id.equals(currentWindowId)) { newWindowId = id; } } // ウィンドウ切り替え WebDriver newWindowDriver = driver.switchTo().window(newWindowId);
参考
http://www.storklab.com/seleniumhq.org/docs/03_webdriver.html
http://d.hatena.ne.jp/kencharos/20111027/1319719613