可以在 Selenium 中处理基于 Windows 的弹出窗口吗?
是的,在 Selenium webdriver 中可以处理基于 Windows 的弹出窗口。有时在单击链接或按钮后,将打开另一个窗口。它可以是包含信息或广告的弹出窗口。
方法 getWindowHandles 和 getWindowHandle 用于处理子窗口。getWindowHandles 方法以 Set 数据结构的形式存储已打开窗口的所有句柄 ID。
getWindowHandle 方法存储焦点窗口的句柄 ID。由于 getWindowHandles 方法包含所有已打开窗口的句柄 ID,因此我们可以使用迭代器和 next 方法遍历这些句柄 ID。
要切换到特定窗口,可以使用 switchTo().().window() 方法。要切换到的窗口的句柄 ID 作为参数传递给此方法。
代码实现
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import java.util.concurrent.TimeUnit; import java.util.List; import java.util.Set; import java.util.Iterator; public class FirstAssign { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "chromedriver"); WebDriver driver = new ChromeDriver(); //implicit wait driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); //url launch driver.get("https://secure.indeed.com/account/login"); driver.findElement(By.id("login-google-button")).click(); //hold window handles Set<String> s = driver.getWindowHandles(); // iterate handles Iterator<String> i = s.iterator(); //child window handle id String c = i.next(); //parent window handle id String p = i.next(); // child window switch driver.switchTo().window(c); System.out.println("Page title of child window: "+ driver.getTitle()); // switch to parent window driver.switchTo().window(p); System.out.println("Page title of parent window: "+ driver.getTitle()); //browser quit driver.quit(); } }
输出
广告