WEB automation (JAVA version)-positioning and operation of special elements-window

Special element positioning and operation-window

When you want to operate the elements of another window page, you must pay attention to switching windows first.
Switching method: pass in the name or handle of the window to be operated handle
driver.switchTo.window (nameOrHandle);

How to get the handle of the window

  • driver.getWindowHandle (); // Get the handle of the current operation window
  • driver.getWindowHandles (); // Get all window handles opened during the test

Code example

Although the page has reached the B window, the handle is still in the a window, so you operate the a window

package com.test;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class SpecialElementLocate {

	private static ChromeDriver chromeDriver;
	
	public static void main(String[] args) throws InterruptedException {	
		//window处理
		//访问本地HTML文件
		chromeDriver.get("D:\\window\\a.html");
		//点击按钮
		chromeDriver.findElement(By.id("aa")).sendKeys("这是第一个窗口");
		System.out.println("跳转前的窗口句柄:"+chromeDriver.getWindowHandle());
		Thread.sleep(2000);
		//切换到B窗口
		chromeDriver.findElement(By.id("bb")).click();
		//虽然页面已经到了B窗口,但是句柄还是在a窗口中,所以你操作的还是a窗口
		Thread.sleep(2000);
		System.out.println("跳转后的窗口句柄:"+chromeDriver.getWindowHandle());	
	}
	
	public static void openChrome() {
		System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
		//1.打开Chrome浏览器
		chromeDriver = new ChromeDriver();
	}
}

Switch handle

package com.test;

import java.util.Set;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class SpecialElementLocate {

	private static ChromeDriver chromeDriver;
	
	public static void main(String[] args) throws InterruptedException {			
		//window处理
		//访问本地HTML文件
		chromeDriver.get("D:\\window\\a.html");
		//点击按钮
		chromeDriver.findElement(By.id("aa")).sendKeys("这是第一个窗口");
		System.out.println("跳转前的窗口句柄:"+chromeDriver.getWindowHandle());
		Thread.sleep(2000);
		//切换到B窗口
		chromeDriver.findElement(By.id("bb")).click();
		//虽然页面已经到了B窗口,但是句柄还是在a窗口中,所以你操作的还是a窗口
		Thread.sleep(2000);
		System.out.println("跳转后的窗口句柄:"+chromeDriver.getWindowHandle());	
		
		//句柄的切换
		//进入到b窗口之后,获取到所有窗口的句柄
		Set<String> handles = chromeDriver.getWindowHandles();
		//对窗口集合进行遍历
		for(String handle : handles) {
			//切换句柄
			chromeDriver.switchTo().window(handle);
			//??我怎么知道b窗口的句柄呢?
			if(chromeDriver.getTitle().equals("b.html")) {
				//如若标题是符合的话,就跳出循环
				break;
			}
		}
		chromeDriver.findElement(By.id("bb")).sendKeys("这是第二个窗口");
	}
	
	public static void openChrome() {
		System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
		//1.打开Chrome浏览器
		chromeDriver = new ChromeDriver();
	}
}
Published 73 original articles · won praise 2 · Views 3154

Guess you like

Origin blog.csdn.net/anniewhite/article/details/105343908