Я надеюсь, что это поможет вам решить вашу проблему, я не хочу предоставлять исправление кода, и я хочу объяснить вам детали процесса шаг за шагом.
Откройте браузер Firefox / IE / Chrome и перейдите к https://www.bbc.co.uk
WebDriver driver = new AnyDriveryourusing();
// set implicit time to 30 seconds
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
// navigate to the url
driver.get("https://www.bbc.co.uk");
Получите идентификатор GU для текущего (родительского) окна, используя метод getWindowHandle()
, присутствующий в веб-драйвере, и сохранитезначение в строке
// get the Session id of the Parent
String parentGUID = driver.getWindowHandle();
Нажмите кнопку «Открыть новое окно», приложение откроет новое окно со страницей Google.
// click the button to open new window
driver.findElement(By.id("two-window")).click();
Thread.sleep(5000);
Получите идентификаторы GU для двух окон (родительский +Google), используя метод getWindowHandles()
, присутствующий в webdriver
. Сохраните идентификаторы GU в коллекции наборов, этот набор будет иметь идентификаторы GU как родительского, так и дочернего браузеров
// get the All the session id of the browsers
Set allGUID = driver.getWindowHandles();
итерирует набор значений GUID, и, если значение является родительским значением, пропустите его, если не переключитесь наВ новом окне
// iterate the values in the set
for(String guid : allGUID){
// one enter into if block if the GUID is not equal to parent window's GUID
if(! guid.equals(parentGUID)){
//todo
}
}
Переключитесь на окно с помощью метода switchTo().window()
, передайте GU ID дочернего браузера этому методу.
// switch to the guid
driver.switchTo().window(guid);
Найдите строку поиска на Google.comи найдите «success»
driver.findElement(By.name("q")).sendKeys("success");
Закройте вкладку Google / окно и вернитесь к родительской вкладке / окну браузера
// close the browser
driver.close();
// switch back to the parent window
driver.switchTo().window(parentGUID);