《手把手教你》系列技巧篇(二十六)-java+ selenium自动化测试-浏览器操作(详细教程)
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()
好了,时间不早了今天就分享到这里,感谢你耐心地阅读!
感谢您花时间阅读此篇文章,如果您觉得这篇文章你学到了东西也是为了犒劳下博主的码字不易不妨打赏一下吧,让博主能喝上一杯咖啡,在此谢过了!
如果您觉得阅读本文对您有帮助,请点一下左下角“推荐”按钮,您的
本文版权归作者和博客园共有,来源网址:https://www.cnblogs.com/du-hong 欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利!
原文地址:https://www.cnblogs.com/du-hong/p/15222440.html
- SPI框架实现之旅三:实现说明
- 10.20 firewalld的9个zone
- 英语不好,数学也不好,能不能学WEB前端?
- 10.19 iptables规则备份和恢复
- 11.6 MariaDB安装
- cocos2dx-v3.4 2048(四):游戏逻辑的设计与实现
- Linux基础(day39)
- Chrome扩展程序之编码&时间戳小工具
- WINDOWS下烧一只鹅
- 11.3/11.4/11.5 MySQL安装
- Greenrobot-EventBus源码学习(六)
- Greenrobot-EventBus源码学习(五)
- writeup分享 | 近期做的比较好的web
- Greenrobot-EventBus源码学习(四)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Guava集合--新集合类型
- 从 Node.js 到 Go
- 性能不达标,计将安出?
- Yaml 速成查询表
- 设计模式实战-策略模式,想让你的代码变幻莫测吗?
- 设计模式实战-模板模式,代码复用神器
- CSS Flexbox 布局完全指南 (二):3000字,多示例讲解
- 设计模式实战-访问者模式,减少代码体积
- Spring Security 实战干货:UsernamePasswordAuthenticationFilter 源码分析
- 打卡群刷题总结0715——旋转链表
- 设计模式实战-中介模式,为你牵桥搭线
- 设计模式实战-迭代器模式,最常用的设计模式之一
- 设计模式实战-解释器模式,今天给你解疑答惑
- 时间不再浪费评估上!ThingJS 3D可视化开发不用愁
- 设计模式实战-命令模式