伊藤です。
for(String winHandle : driver.getWindowHandles()){
driver.switchTo().window(winHandle);
}
は、現在のすべてのウィンドウをリストアップし、それに対し1つずつ移動していくという処理になるので、
どの順番で最終的にどのウィンドウに移動するのかはよくわからないですし、
すべてのウィンドウをリストアップした時点で子ウィンドウがまだ存在しないことはありえそうです。
ウィンドウ遷移のコードとしては、
driver.switchTo().window("ウィンドウ名")
でやるのが一番オーソドックスなやり方だと思います。
ウィンドウ名がないなら、
driver.getWindowHandles(): すべてのウィンドウをリストアップ
driver.getWindowHandle(): ウィンドウを一意に特定するハンドルという文字列(?)を取得
driver.getTitle(): ウィンドウのタイトルを取得
などを組み合わせてプログラムを組むことになると思います。
サンプルコードは、探せばどこかにあるかもしれません。
ちなみに「タイトルのウィンドウに遷移」と「新しく開いたウィンドウに遷移」のサンプルコードなら
Selenium実践入門に書きました(ステマ)。
あとは、Selenium IDEで記録してJavaプログラムにExportすれば、
何か参考になるコードが生成されるかもしれません。
ウィンドウの出てくるタイミングが問題になりそうで、何か待ち処理をいれたい、という場合、
残念ながらちょうどよいメソッドはJavaのWebDriverになさそうなので、
やはりなんらかプログラムを組まないとダメに思います。
サンプルコードは、やはり探せばどこかにあるかもしれません。