【发布时间】:2021-08-19 21:00:15
【问题描述】:
getwindowhandle(); -> 用于获取父窗口名称。
getwindowhandles(): -> 用于获取所有子窗口的链接。
但是如何使用字符串和迭代器的概念呢?对于子窗口
【问题讨论】:
getwindowhandle(); -> 用于获取父窗口名称。
getwindowhandles(): -> 用于获取所有子窗口的链接。
但是如何使用字符串和迭代器的概念呢?对于子窗口
【问题讨论】:
您可以使用以下代码-
String mainwindow=driver.getWindowHandle(); //get parent(current) window name
for(String popup :driver.getWindowHandles()) //iterating on child windows
{
driver.switchTo().window(popup);
System.out.println("Popup values: "+popup);
// Perform any operations on child window
}
driver.switchTo().window(mainwindow); //switch back to main window & continue further execution
【讨论】:
试试这个。
public void SwitchToAnotherWindow(Webdriver driver,int window_number){
List<String> windowlist = null;
Set<String> windows = driver.getWindowHandles();
windowlist = new ArrayList<String>(windows);
String currentWindow = driver.getWindowHandle();
if (!currentWindow.equalsIgnoreCase(windowlist.get(window_number - 1)))
{
driver.switchTo().window(windowlist.get(window_number - 1));
}
}
只需传递窗口编号你要执行哪个窗口例如如果你想切换到3个窗口只需将3传递给这个方法,它可以直接洗牌到任何窗口 (例如:1 到 9 窗口,或 9 到 4 窗口)
【讨论】:
public static void main(String[] args) throws InterruptedException
{
WebDriver d = new FirefoxDriver();
d.get("url");
String prntwin = d.getWindowHandle();
System.out.println("Parent window's handle -> " + prntwin);
WebElement clkElement = d.findElement(By.id("button1"));
for(int i = 0; i < 3; i++)
{
clkElement.click();
Thread.sleep(3000);
}
Set<String> allWindowHandles = d.getWindowHandles();
for(String handle : allWindowHandles)
{
System.out.println("Window handle - > " + handle);
}
}
【讨论】:
public static void main(String[] args) throws InterruptedException {
ChromeOptions chromeOption = new ChromeOptions();
ChromeDriverManager.chromedriver().setup();
ChromeDriver driver = new ChromeDriver(chromeOption);
driver.get("https://the-internet.herokuapp.com/");
driver.manage().window().maximize();
driver.findElement(By.xpath("//a[contains(text(),'Multiple Windows')]")).click();
driver.findElement(By.xpath("//a[@target='_blank']")).click();
Set<String>id=driver.getWindowHandles();
Iterator<String> ids=id.iterator();
String Parent=ids.next();
String Child=ids.next();
driver.switchTo().window(Child);
System.out.println(driver.getTitle());
driver.switchTo().window(Parent);
System.out.println(driver.getTitle());
}
}
【讨论】: