1.简介
在Web自动化的操作中,我们通常需要使用一些方法来操作浏览器,今天就来学习一下。这一篇宏哥主要是介绍一下,在自动化测试的时候,我们常见的一些浏览器操作有哪些,宏哥将会一一介绍和讲解。
2.浏览器操作
宏哥首先介绍一下常用的基本操作,然后再通过具体实例给小伙伴或者童鞋们演示一下。
2.1打开浏览器
//IE浏览器
System.setProperty("webdriver.ie.driver", ".\\Tools\\IEDriverServer.exe");
WebDriver driver = new InternetExplorerDriver();
//Chrome
System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
//FireFox(自定义安装)
System.setProperty("webdriver.firefox.bin", "D:\\ProgramFiles\\Mozilla Firefox\\firefox.exe");
//FireFox版本大于48,默认安装
System.setProperty("webdriver.firefox.marionette", ".\\Tools\\geckodriver.exe");
//FireFox版本小于48
System.setProperty("webdriver.firefox.marionette", ".\\Tools\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
2.2打开url
//两种方式实现的效果一样
String url = "http://www.baidu.com";
driver.get(url);
driver.navigate().to(url);
2.3浏览器最大化
窗口最大化,maximize()方法可以将浏览器窗口最大化
// 浏览器窗口最大
driver.manage().window().maximize();
2.4浏览器刷新
refresh()方法可以在自动化测试的时候刷新当前页面
// 当前页刷新
driver.navigate().refresh();
2.5浏览器前进
forward()方法可以模拟浏览器的前进操作
// 前进,跳转到下一页
driver.navigate().forward ();
2.6浏览器后退
back()方法可以模拟浏览器的回退操作
// 后退,跳转到上一页
driver.navigate().back();
2.7浏览器位置和设置窗口位置
浏览器的位置设置getPosition()
* 注意targetPosition是一个点对象,把一个点作为参数传入
* 声明一个 point 对象,两个 150 表示浏览器的位置相对于屏幕左上角(0,0)的横纵坐标举例
Point targetPosition = new Point(150,150);
driver.manage().window().setPosition(targetPosition);
System.out.println(driver.manage().window().getPosition());
2.8浏览器窗口大小
获得窗口大小,getSize()方法能够获得窗口的尺寸信息,返回一个Dimension对象,该对象包括了窗口的高度,宽度信息
*注意targetSize是一个对象传入,也不可以直接写成 1366*768
* 1366 * 768 表示窗口的长和宽
Dimension targetSize = new Dimension(1366,768);
driver.manage().window().setSize(targetSize);
System.out.println(driver.manage().window().getSize());
2.9返回当前的url和title
// 返回当前页面的Ttile
String title = driver.getTitle();
// 返回当前页面的url
String currentUrl = driver.getCurrentUrl();
3.0关闭浏览器
// 关闭当前页面
driver.close();
// 关闭由selenium所启动的所有页面
driver.quit();
3.项目实战
以度娘为例,打开浏览器设置浏览器的位置,然后再设置浏览器的大小。最后将浏览器最大化。查询“北京宏哥”后,刷新页面执行回退到百度首页,然后有执行前进进入到搜索“北京宏哥”页面。
3.1代码设计
3.2参考代码
package lessons;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
/**
* @author 北京-宏哥
*
* 2021年9月6日
*/
public class Windows {
public static void main(String[] args) throws InterruptedException {
//打开浏览器
System.setProperty("webdriver.gecko.driver", ".\\Tools\\chromedriver.exe"); //指定驱动路径
WebDriver driver =new ChromeDriver();
//设置浏览器出现的位置
driver.manage().window().setPosition(new Point(1350, 200));
Thread.sleep(1000);
//设置浏览器大小
driver.manage().window().setSize(new Dimension(200, 500));
Thread.sleep(1000);
//获取浏览器位置和大小信息
System.out.println("浏览器所在位置:"+driver.manage().window().getPosition());
System.out.println("浏览器大小:"+driver.manage().window().getSize());
//浏览器满屏,覆盖任务栏
//webDriver.manage().window().fullscreen();
//浏览器最大化,不覆盖任务栏
driver.manage().window().maximize();
System.out.println("浏览器最大化");
//打开URL
driver.get("http://www.baidu.com");
System.out.println("打开URL");
Thread.sleep(2000);
//输入“北京宏哥”,点击“百度一下”
WebElement SearchBox = driver.findElement(By.xpath( "//*[@id='kw']" ));
SearchBox.sendKeys("北京宏哥");
WebElement SearchButton = driver.findElement(By.xpath("//*[@id='su']"));
SearchButton.click();
// 当前页刷新
driver.navigate().refresh();
System.out.println("刷新当前页面");
Thread.sleep(2000);
//执行浏览器后退
driver.navigate().back();
System.out.println("back... this www.baidu.com");
Thread.sleep(2000);
//执行浏览器前进
driver.navigate().forward();
System.out.println("forward..."+driver.getCurrentUrl ());
Thread.sleep(2000);
driver.quit();
Thread.sleep(2000);
driver.quit();
}
}
3.3运行代码
1.运行代码,右键Run AS->java Application,控制台输出,如下图所示:
2.运行代码后电脑端的浏览器的动作,可以看到查询“北京宏哥”后,刷新页面执行回退到百度首页,然后有执行前进进入到搜索“北京宏哥”页面。如下小视频所示:
4.小结
在代码报错处,提示导入包,要注意导入selenium的包(一个java包和一个selenium包),否则还报错,没有这个方法。如下图所示:
5.拓展
5.1其他方法
这些基本上在前边的文章中宏哥都介绍过了这里就简单的提一下,不做赘述了。
// 返回当前的浏览器的窗口句柄
String currentWindowHandle = driver.getWindowHandle()
// 返回当前的浏览器的所有窗口句柄
Set<String> allWindowHandles = driver.getWindowHandles();
// 返回当前页面的源码
String currentPageSource = getPageSource()
好了,时间不早了今天就分享到这里,感谢你耐心地阅读!
每天学习一点,今后必成大神-
往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问)或者微信搜索: 北京宏哥 公众号提前解锁更多干货。
Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试
Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南
Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架
Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架
Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程