5.在窗口或frame 之间切换
importjava.util.Set;
importorg.openqa.selenium.JavascriptExecutor;
importorg.openqa.selenium.WebDriver;
importorg.openqa.selenium.WebElement;
importorg.openqa.selenium.firefox.FirefoxDriver;
/**
* 在窗口或Frame 之间切换
*
* @author outman
* @date 2018-11-07
*/
publicclassDemo_06{
publicstaticvoidmain(String[] args) {
// 打开浏览器
WebDriver dirver = openFirFox();
// 执行操作
doExecute(dirver);
}
/**
* 执行操作
* */
privatestaticvoiddoExecute(WebDriver dirver) {
JavascriptExecutor jsExecute = (JavascriptExecutor) dirver;
StringopenWindowPre ="window.open('";
StringopenWindowSuf ="');";
Stringurl_1 ="https://www.sogou.com";
Stringurl_2 ="http://田杰.wang";
// 打开多个窗口
dirver.get("http://www.baidu.com");
// jsExecute.executeScript(openWindowPre+url_1+openWindowSuf);
// jsExecute.executeScript(openWindowPre+url_2+openWindowSuf);
// 获取当前窗口的handle
StringwindowHandle = dirver.getWindowHandle();
System.out.println("当前浏览器handle:"+windowHandle);
// 列出浏览器所有窗口的handle
Set windowHandles = dirver.getWindowHandles();
System.out.println("所有窗口的handle:"+windowHandles);
// 获取当前页面标题
Stringtitle = dirver.getTitle();
System.out.println("当前页面标题:"+title);
// 获取当前页面源码
StringpageSource = dirver.getPageSource();
//System.out.println("当前页面源码:"+pageSource);
// 获取当前页面url
StringcurrentUrl = dirver.getCurrentUrl();
System.out.println("当前页面url:"+currentUrl);
// 聚焦到顶部窗口 或 顶部frame
WebDriver defaultContent = dirver.switchTo().defaultContent();
// 返回到当前聚焦的元素 如果没有聚焦的元素 则返回body
WebElement activeElement = dirver.switchTo().activeElement();
// 切换单当前活跃的提示窗
// Alert alert = dirver.switchTo().alert(); //没有找到alert会抛异常
// 切换到指定窗口
WebDriverwindow= dirver.switchTo().window(windowHandle);// 传入 name 或者handle
// 切换frame
WebDriver frame = dirver.switchTo().frame("");
// 切换到父frame
WebDriver parentFrame = dirver.switchTo().parentFrame();
}
/**
* 打开火狐浏览器
*/
privatestaticWebDriver openFirFox() {
// geckodriver 下载地址: https://github.com/mozilla/geckodriver
System.setProperty("webdriver.gecko.driver","D:\\DevelopSoftware\\geckodriver-v0.23.0-win64\\geckodriver.exe");
// 读取获取浏览器二进制文件
System.setProperty("webdriver.firefox.bin","D:\\应用\\FoxMail\\firefox.exe");
WebDriver dirver =newFirefoxDriver();
returndirver;
}
}
6.操作alert
点击Alert窗口中的OK:
driver.switchTo().alert().accept();
点击Alert窗口中的Cancel:
driver.switchTo().alert().dismiss();
向Alert窗口输入文字:
driver.switchTo().alert().sendKeys(‘abcd’);
7.操作浏览器的导航及地址栏
importorg.openqa.selenium.WebDriver;
importorg.openqa.selenium.firefox.FirefoxDriver;
/**
* 操作浏览器的导航及地址栏
*
* @author outman
* @date 2018-11-07
*/
publicclassDemo_07{
publicstaticvoidmain(String[] args){
// 打开浏览器
WebDriver dirver = openFirFox();
// 执行操作
doExecute(dirver);
}
/**
* 执行操作
* */
privatestaticvoiddoExecute(WebDriver dirver){
//导航到百度
dirver.get("http://www.baidu.com");
//导航到搜狗
dirver.navigate().to("https://www.sogou.com");
//导航后退
dirver.navigate().back();
//导航前进
dirver.navigate().forward();
//导航刷新
dirver.navigate().refresh();
}
/**
* 打开火狐浏览器
*/
privatestaticWebDriveropenFirFox(){
// geckodriver 下载地址: https://github.com/mozilla/geckodriver
System.setProperty("webdriver.gecko.driver","D:\\DevelopSoftware\\geckodriver-v0.23.0-win64\\geckodriver.exe");
// 读取获取浏览器二进制文件
System.setProperty("webdriver.firefox.bin","D:\\应用\\FoxMail\\firefox.exe");
WebDriver dirver =newFirefoxDriver();
returndirver;
}
}
8.操作cookie
import java.util.Set;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
/**
* 操作cookie
*/
publicclassDemo_08{
publicstaticvoidmain(String[] args){
// 打开浏览器
WebDriver dirver = openFirFox();
// 执行操作
doExecute(dirver);
}
/**
* 执行操作
*/
privatestaticvoiddoExecute(WebDriver dirver){
dirver.get("http://www.baidu.com");
// 添加cookie
Cookie addCookie =newCookie("outman","1317361873dfdfv");
dirver.manage().addCookie(addCookie);
// 得到所有的cookie
Set cookies = dirver.manage().getCookies();
for(Cookie cookie : cookies) {
System.out.println("cookie:"+cookie);
}
System.out.println("所有cookie:"+cookies);
// 根据名字获取cookie
Cookie outman = dirver.manage().getCookieNamed("outman");
System.out.println("outman的cookie:"+outman);
// 根据name删除cookie
dirver.manage().deleteCookieNamed("outman");
Cookie outman2 = dirver.manage().getCookieNamed("outman");
System.out.println("outman的cookie:"+outman2);
// 删除指定的cookie
dirver.manage().deleteCookie(newCookie("outman",""));
Cookie outman3 = dirver.manage().getCookieNamed("outman");
System.out.println("outman的cookie:"+outman3);
// 删除所有cookie
dirver.manage().deleteAllCookies();
Set cookies2 = dirver.manage().getCookies();
System.out.println("所有cookie:"+cookies2);
}
/**
* 打开火狐浏览器
*/
privatestaticWebDriveropenFirFox(){
// geckodriver 下载地址: https://github.com/mozilla/geckodriver
System.setProperty("webdriver.gecko.driver","D:\\DevelopSoftware\\geckodriver-v0.23.0-win64\\geckodriver.exe");
// 读取获取浏览器二进制文件
System.setProperty("webdriver.firefox.bin","D:\\应用\\FoxMail\\firefox.exe");
WebDriver dirver =newFirefoxDriver();
returndirver;
}
}
9.高级用户接口
importorg.openqa.selenium.By;
importorg.openqa.selenium.Keys;
importorg.openqa.selenium.WebDriver;
importorg.openqa.selenium.WebElement;
importorg.openqa.selenium.firefox.FirefoxDriver;
importorg.openqa.selenium.interactions.Actions;
/**
* 高级用户接口
*
* @author outman
* @dete 2018-11-07
*/
publicclassDemo_09{
publicstaticvoidmain(String[] args){
// 打开浏览器
WebDriver dirver = openFirFox();
// 执行操作
doExecute(dirver);
}
/**
* 执行操作
*/
privatestaticvoiddoExecute(WebDriver dirver){
dirver.get("http://www.baidu.com");
Actions action =newActions(dirver);
WebElement trnews = dirver.findElement(By.name("tj_trnews"));
WebElement trxueshu = dirver.findElement(By.name("tj_trxueshu"));
WebElement kw = dirver.findElement(By.id("kw"));
// perform() 方法为整个动作完成之后的提交操作
// 移动鼠标至某个dom元素 (选中页面 新闻)
// action.moveToElement(trnews).perform();
// 鼠标点击元素
// action.click(trnews).perform();
// 鼠标点击并悬停
// action.clickAndHold(trnews).perform();
// 在指定元素上点击右键
// action.contextClick(trnews).perform();
// 在指定元素上双击
// action.doubleClick(trnews).perform();
// 点击并拖拽 (将资源拖到 指定元素 , 或指定位置)
// action.dragAndDrop(trnews , trxueshu).perform();
// action.dragAndDropBy(trnews, 100, 100).perform();;
// 键盘按下
// action.keyDown(Keys.ENTER).perform();
// 键盘按键抬起
// action.keyUp(Keys.ENTER).perform();
// 将光标移动至指定位置
// action.moveByOffset(100, 100).perform();
// 暂停指定的时间
for(inti =; i
kw.sendKeys(i+"");
action.pause(1000).perform();
}
// 释放鼠标
action.release().perform();
}
/**
* 打开火狐浏览器
*/
privatestaticWebDriveropenFirFox(){
// geckodriver 下载地址: https://github.com/mozilla/geckodriver
System.setProperty("webdriver.gecko.driver","D:\\DevelopSoftware\\geckodriver-v0.23.0-win64\\geckodriver.exe");
// 读取获取浏览器二进制文件
System.setProperty("webdriver.firefox.bin","D:\\应用\\FoxMail\\firefox.exe");
WebDriver dirver =newFirefoxDriver();
returndirver;
}
}
操作等待
importjava.util.concurrent.TimeUnit;
importorg.openqa.selenium.By;
importorg.openqa.selenium.WebDriver;
importorg.openqa.selenium.WebElement;
importorg.openqa.selenium.firefox.FirefoxDriver;
importorg.openqa.selenium.support.ui.ExpectedCondition;
importorg.openqa.selenium.support.ui.WebDriverWait;
/**
* 操作等待
* @author outman
* @date 2018-11-07
* */
publicclassDemo_10{
publicstaticvoidmain(String[] args){
// 打开浏览器
WebDriver dirver = openFirFox();
// 执行操作
doExecute(dirver);
}
/**
* 执行操作
* */
privatestaticvoiddoExecute(WebDriver driver){
// 显式等待
driver.get("http://www.baidu.com");
WebElement kw = driver.findElement(By.id("kw"));
kw.sendKeys("webDriver");
// 显式等待 针对单个元素 隐式等待针对整个页面
// 最大超时时间是10秒
// 默认每隔500毫秒扫描一次 如果检测到结果则返回
WebDriverWait wait =newWebDriverWait(driver,10,1);
//获取第一条结果
WebElement resultOne = wait.until(newExpectedCondition() {
publicWebElement apply(WebDriver driver) {
returndriver.findElement(By.id("1"));
}
}).findElement(By.tagName("h3")).findElement(By.tagName("a"));
System.out.println(resultOne.getText());
resultOne.click();
//隐式等待
//设置页面加载时间最大为10秒
// driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
// driver.get("http://www.baidu.com");
//
// //定位对象设置10秒超时时间 , 10秒还定位不到则抛出异常
// driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// WebElement kw = driver.findElement(By.id("kw"));
//
// //异步脚本执行超时时间设置为3秒
// driver.manage().timeouts().setScriptTimeout(1, TimeUnit.SECONDS);
}
/**
* 打开火狐浏览器
*/
privatestaticWebDriveropenFirFox(){
// geckodriver 下载地址: https://github.com/mozilla/geckodriver
System.setProperty("webdriver.gecko.driver","D:\\DevelopSoftware\\geckodriver-v0.23.0-win64\\geckodriver.exe");
// 读取获取浏览器二进制文件
System.setProperty("webdriver.firefox.bin","D:\\应用\\FoxMail\\firefox.exe");
WebDriver dirver =newFirefoxDriver();
returndirver;
}
}
执行js脚本
// 创建js 执行对象
JavascriptExecutor jsExceut = (JavascriptExecutor) dirver;
// 导航到百度
dirver.get("http://www.baidu.com");
// 创建多个窗口
Stringjs ="window.open(\"https://www.sogou.com\");";
Stringjs2 ="window.open(\"http://www.w3school.com.cn/xpath/xpath_syntax.asp\");";
// 当只传入js脚本时 , 默认执行该js 的对象时浏览器
jsExceut.executeScript(js);
jsExceut.executeScript(js2);
同时启动多个测试
1.主类
importorg.openqa.selenium.By;
importorg.openqa.selenium.WebDriver;
importorg.openqa.selenium.WebElement;
importorg.openqa.selenium.support.ui.ExpectedCondition;
importorg.openqa.selenium.support.ui.WebDriverWait;
/**
* 同时启动多个浏览器执行测试
*/
publicclassDemo_11{
publicstaticvoidmain(String[] args){
for(inti =; i
newThread(newRunnable() {
publicvoidrun(){
newDemo_11FirFox().doExecute();
}
}).start();
newThread(newRunnable() {
publicvoidrun(){
newDemo_11IE().doExecute();
}
}).start();
newThread(newRunnable() {
publicvoidrun(){
newDemo_11Chrome().doExecute();
}
}).start();
}
}
publicvoiddoExecute(WebDriver driver){
driver.get("http://www.baidu.com");
WebElement sbtn = driver.findElement(By.id("kw"));
sbtn.sendKeys("webDriver");
WebDriverWait wait =newWebDriverWait(driver,10,1);
WebElement resultOne = wait.until(newExpectedCondition() {
publicWebElementapply(WebDriver input){
returninput.findElement(By.id("1"));
}
}).findElement(By.tagName("h3")).findElement(By.tagName("a"));
// 点击第一条
resultOne.click();
}
}
谷歌浏览器测试类
importorg.openqa.selenium.WebDriver;
importorg.openqa.selenium.chrome.ChromeDriver;
publicclassDemo_11ChromeextendsDemo_11{
publicWebDriver driver =null;
publicDemo_11Chrome(){
System.setProperty("webdriver.chrome.driver","D:\\DevelopSoftware\\chromedriver_win32\\chromedriver.exe");
driver =newChromeDriver();
}
publicvoiddoExecute(){
super.doExecute(driver);
}
}
火狐浏览器测试类
importorg.openqa.selenium.WebDriver;
importorg.openqa.selenium.firefox.FirefoxDriver;
publicclassDemo_11FirFoxextendsDemo_11{
privateWebDriver driver =null;
publicDemo_11FirFox(){
System.setProperty("webdriver.gecko.driver","D:\\DevelopSoftware\\geckodriver-v0.23.0-win64\\geckodriver.exe");
//读取获取浏览器二进制文件
System.setProperty("webdriver.firefox.bin","D:\\应用\\FoxMail\\firefox.exe");
driver =newFirefoxDriver();
}
publicvoiddoExecute(){
super.doExecute(driver);
}
}
IE浏览器测试类
importorg.openqa.selenium.WebDriver;
importorg.openqa.selenium.ie.InternetExplorerDriver;
publicclassDemo_11IEextendsDemo_11{
privateWebDriver driver =null;
publicDemo_11IE(){
System.setProperty("webdriver.ie.driver",
"D:\\DevelopSoftware\\IEDriverServer_x64_3.141.0\\IEDriverServer.exe");
driver =newInternetExplorerDriver();
}
publicvoiddoExecute(){
super.doExecute(driver);
}
}
如果看了觉得不错
分享给你的朋友!
领取专属 10元无门槛券
私享最新 技术干货