seleniumマルチウィンドウ切り替えの実現(windows)
webアプリケーションでは、あるリンクをクリックすると新しいウィンドウがポップアップしたり、相互に関連するウェブアプリケーションが現れたりします。このように新しいウィンドウの要素を操作するには、ホストが新しいウィンドウに切り替えて操作する必要があります。WebDriverはSwitch To().window()の方法を提供して、異なるウィンドウ間で切り替えることができます。
以下のコードは新浪網を例とする。ハンドルを取得することで指定のウィンドウに切り替え、ウィンドウを閉じます。もちろん指定されたウィンドウに切り替えます。元素の位置付けなどで要素を操作することもできます。
get WindowHandle():現在のウィンドウのハンドルを取得します。
getWindowHandles():現在のセッションに戻るすべてのウィンドウのハンドル。
switch To().window():対応するウィンドウに切り替えるために使用され、前のセクションのswitch To().frame()と同様に、前者は異なるウィンドウの切り替えに使用され、後者は異なるフォーム間の切り替えに使用されます。
以下のコードは新浪網を例とする。ハンドルを取得することで指定のウィンドウに切り替え、ウィンドウを閉じます。もちろん指定されたウィンドウに切り替えます。元素の位置付けなどで要素を操作することもできます。
get WindowHandle():現在のウィンドウのハンドルを取得します。
getWindowHandles():現在のセッションに戻るすべてのウィンドウのハンドル。
switch To().window():対応するウィンドウに切り替えるために使用され、前のセクションのswitch To().frame()と同様に、前者は異なるウィンドウの切り替えに使用され、後者は異なるフォーム間の切り替えに使用されます。
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "D:/chromedriver_win32/chromedriver.exe");
ChromeOptions Options = new ChromeOptions();
Options.addArguments("user-data-dir=C:\\Users\\happy\\AppData\\Local\\Google\\Chrome\\User Data");
WebDriver driver = new ChromeDriver(Options);
driver.manage().window().maximize();
//
driver.get("http://www.sina.com.cn/");
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
// ,
String sreachHand = driver.getWindowHandle();
//
driver.findElement(By.linkText(" ")).click();
//
driver.findElement(By.linkText(" ")).click();
//
java.util.Set<String> Handles = driver.getWindowHandles();
System.out.println(Handles.size() + " ");
// Set 。
// , 。
for (String i : Handles) {
if (i.equals(sreachHand)) {
driver.switchTo().window(i);
Thread.sleep(5000);
driver.close();
}
}
}
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。