Из моего собственного опыта требуется несколько мс, чтобы добраться до "нового" дескриптора окна. В Firefox это работает для меня:
public void goto2 () throws InterruptedException {
Thread.sleep(100);
ArrayList<String> winHandles = new ArrayList<String> (driver.getWindowHandles());
Thread.sleep(100);
driver.switchTo().window(winHandles.get(1));
}
В Chrome вам даже не нужно переключаться, драйвер выполняет всю работу сам. По крайней мере, на новых вкладках и окнах, не уверен, что на фреймах тоже.
Если вы хотите попробовать Chrome, есть мои настройки:
System.setProperty("webdriver.chrome.driver", "C:\\Users\\pburgr\\Desktop\\chromedriver\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=C:\\Users\\pburgr\\AppData\\Local\\Google\\Chrome\\User Data");
driver = new ChromeDriver(options);
driver.manage().window().maximize();
Включает в себя существующий профиль Chrome, так что вы можете использовать расширения, кеш, что угодно. Просто отредактируйте путь к exe и папке профиля.