首页
学习
活动
专区
工具
TVP
发布

webDirver自动化测试框架详解

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

}

}

如果看了觉得不错

分享给你的朋友!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190102G076GM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券