Java【selenium】在网站内打开新窗口,进行切换窗口

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();	
}

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值