import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
/*
*selenium在网站内切换窗口
*
*/
class SwitchingWindow {
//定义Webdriver
WebDriver driver;
//定义访问网址
String baseurl;
@BeforeEach
void setUp() throws Exception {
//谷歌浏览器的本地驱动
System.setProperty("webdriver.chrome.driver", "/Users/lisen/webselenium/selenium/chromedriver");
//new一个谷歌浏览器对象
driver =new ChromeDriver();
//定义访问网址,访问的是去哪网
baseurl="file:///Users/lisen/Downloads/PracticePage.html";
//打开网址过后,设置隐性等待,等待10秒
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
//打开网址后,窗口最大化
driver.manage().window().maximize();
}
@Test
void test() throws Exception {
//打开网址,调用driver.get方法
driver.get(baseurl);
//打印log信息
System.out.println("打开网址完成");
// //用id查找
// WebElement openwindo=driver.findElement(By.id(“openwindow”));
// openwindo.click();
// //打印log信息
// System.out.println(“点击网址完成”);
// //在新打开的窗口输入最新值
// WebElement searchBox=driver.findElement(By.id(“header-search-field”));
// searchBox.sendKeys(“selenium webdriver”);
/*
* 有些页面的链接打开后,会重新打开一个窗口,
* 对于这种情况,想在新页面上操作,就得先切换窗口了。
* 获取窗口的唯一标识用句柄表示,所以只需要切换句柄,
* 我们就能在多个页面上灵活自如的操作了。
*/
//获取当前窗口的Handle
String parentHandle=driver.getWindowHandle();
//主窗口Handle为
System.out.println(“主窗口Handle为”+parentHandle);
//查找打开新窗口按钮
WebElement openwindow =driver.findElement(By.id(“openwindow”));
//点击新窗口
openwindow.click();
Thread.sleep(3000);
//获取所有的Handle
Sethandles=driver.getWindowHandles();
//判断是否打开了新窗口
for(String handle:handles) {
System.out.println(handle);
if (!handle.equals(parentHandle)) {
driver.switchTo().window(handle);
Thread.sleep(3000);
//点击网站
driver.findElement(By.id(“result_logo”)).click();
//等待3秒钟
Thread.sleep(3000);
WebElement TestBox=driver.findElement(By.id(“kw”));
TestBox.sendKeys(“Selenium Webdriver”);
//等待2秒钟
Thread.sleep(2000);
//只关闭当前焦点窗口
driver.close();
//跳出当前循环
break;
}
//切换回主窗口
driver.switchTo().window(parentHandle);
//在主窗口输入文字
driver.findElement(By.id("name")).sendKeys("测试完成");
}
}
@AfterEach
void tearDown() throws Exception {
//设置等待时间,看清楚操作
Thread.sleep(2000);
//关闭浏览器
driver.quit();
}
}