Added some fixes on nestedwindows

This commit is contained in:
Guillem Hernandez Sola
2026-04-20 17:09:33 +02:00
parent 822b916a23
commit 73c7b7a45b

View File

@@ -1,54 +1,78 @@
package com.agile611.testng.webdriver; package com.agile611.testng.webdriver;
import org.openqa.selenium.By; import java.time.Duration;
import org.testng.annotations.Test;
import java.util.Set; import java.util.Set;
import static org.hamcrest.CoreMatchers.*; import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.Test;
public class MultipleWindowsTest extends BaseTest { public class MultipleWindowsTest extends BaseTest {
@Test @Test
public void multipleWindows() { public void multipleWindows() {
driver.get("http://the-internet.herokuapp.com/windows"); driver.get("http://the-internet.herokuapp.com/windows");
String originalWindow = driver.getWindowHandle();
driver.findElement(By.cssSelector(".example a")).click(); driver.findElement(By.cssSelector(".example a")).click();
Object[] allWindows = driver.getWindowHandles().toArray();
driver.switchTo().window(allWindows[0].toString()); WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
assertThat(driver.getTitle(), is(not("New Window"))); wait.until(ExpectedConditions.numberOfWindowsToBe(2));
driver.switchTo().window(allWindows[1].toString());
assertThat(driver.getTitle(), is("New Window")); String newWindow = "";
for (String handle : driver.getWindowHandles()) {
if (!handle.equals(originalWindow)) {
newWindow = handle;
}
}
// Verificar ventana original
driver.switchTo().window(originalWindow);
assertThat(driver.getTitle(), is(not(equalTo("New Window"))));
// Verificar nueva ventana
driver.switchTo().window(newWindow);
assertThat(driver.getTitle(), is(equalTo("New Window")));
// ✅ Cerrar la ventana nueva y volver a la original
driver.close();
driver.switchTo().window(originalWindow);
} }
@Test @Test
public void multipleWindowsRedux() { public void multipleWindowsRedux() {
driver.get("http://the-internet.herokuapp.com/windows"); driver.get("http://the-internet.herokuapp.com/windows");
// Get initial window handle
String firstWindow = driver.getWindowHandle(); String firstWindow = driver.getWindowHandle();
// Create a newWindow variable
String newWindow = ""; String newWindow = "";
// Trigger new window to open
driver.findElement(By.cssSelector(".example a")).click(); driver.findElement(By.cssSelector(".example a")).click();
// Grab all window handles
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
wait.until(ExpectedConditions.numberOfWindowsToBe(2));
Set<String> allWindows = driver.getWindowHandles(); Set<String> allWindows = driver.getWindowHandles();
// Iterate through window handles collection
// Find the new window handle, storing it in the newWindow variable
for (String window : allWindows) { for (String window : allWindows) {
if (!window.equals(firstWindow)) { if (!window.equals(firstWindow)) {
newWindow = window; newWindow = window;
} }
} }
// Switch to the first window & verify
driver.switchTo().window(firstWindow); driver.switchTo().window(firstWindow);
assertThat(driver.getTitle(), is(not(equalTo("New Window")))); assertThat(driver.getTitle(), is(not(equalTo("New Window"))));
// Switch to the new window & verify
driver.switchTo().window(newWindow); driver.switchTo().window(newWindow);
assertThat(driver.getTitle(), is(equalTo("New Window"))); assertThat(driver.getTitle(), is(equalTo("New Window")));
}
} // ✅ Cerrar la ventana nueva y volver a la original
driver.close();
driver.switchTo().window(firstWindow);
}
}