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

   好了,时间不早了今天就分享到这里,感谢你耐心地阅读!

《手把手教你》系列技巧篇(二十六)-java+ selenium自动化测试-浏览器操作(详细教程)的更多相关文章

  1. 《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍By ClassName.看到ID,NAME这些方法的讲解,小伙伴们和童鞋们应该知道,要做好Web自动化测试,最好是需要了 ...

  2. 《手把手教你》系列技巧篇(十七)-java+ selenium自动化测试-元素定位大法之By css上卷(详细教程)

    1.简介 CSS定位方式和xpath定位方式基本相同,只是CSS定位表达式有其自己的格式.CSS定位方式拥有比xpath定位速度快,且比CSS稳定的特性.下面详细介绍CSS定位方式的使用方法.xpat ...

  3. 《手把手教你》系列技巧篇(十一)-java+ selenium自动化测试-元素定位大法之By tag name(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍By ClassName.看到ID,NAME这些方法的讲解,小伙伴们和童鞋们应该知道,要做好Web自动化测试,最好是需要了 ...

  4. 《手把手教你》系列技巧篇(十三)-java+ selenium自动化测试-元素定位大法之By partial link text(详细教程)

    1.简介 本文按计划就要开始介绍partial link text,顾名思义是通过链接定位的(官方说法:超链接文本定位).什么是partial link text呢,看到part这个单词我们就可以知道 ...

  5. 《手把手教你》系列技巧篇(七)-java+ selenium自动化测试-宏哥带你全方位吊打Chrome启动过程(详细教程)

    1.简介 经过前边几篇文章和宏哥一起的学习,想必你已经知道了如何去查看Selenium相关接口或者方法.一般来说我们绝大多数看到的是已经封装好的接口,在查看接口源码的时候,你可以看到这个接口上边的注释 ...

  6. 《手把手教你》系列技巧篇(八)-java+ selenium自动化测试-元素定位大法之By id(详细教程)

    1.简介 从这篇文章开始,要介绍web自动化核心的内容,也是最困难的部分了,就是:定位元素,并去对定位到的元素进行一系列相关的操作.想要对元素进行操作,第一步,也是最重要的一步,就是要找到这个元素,如 ...

  7. 《手把手教你》系列技巧篇(九)-java+ selenium自动化测试-元素定位大法之By name(详细教程)

    1.简介 上一篇宏哥已经介绍了通过id来定位元素,今天继续介绍其他剩下的七种定位方法中的通过name来定位元素.本文来介绍Webdriver中元素定位方法之By name,顾名思义,就是我们想要定位的 ...

  8. 《手把手教你》系列技巧篇(五十)-java+ selenium自动化测试-字符串操作-上篇(详解教程)

    1.简介 自动化测试中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥这里介绍两种 ...

  9. 《手把手教你》系列技巧篇(十六)-java+ selenium自动化测试-元素定位大法之By xpath下卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

随机推荐

  1. Qt Designer中自定义控件的使用(提升法与插件法)

    准备乱写一点Qt自定义Widget在Designer中的使用.可是又不想重复提升法(promotion)及插件法基本用法,因为Manual中Using Custom Widgets with Qt D ...

  2. 从跨域与同源策略谈CSRF防御与绕过

    之前偶然看到群里有小伙汁问这个token相关的问题,当时我酝酿了一下子,没想好怎么总结,今天来说一下 CSRF在过去还属于OWASP TOP10 ,现在已经不是了(补充一点:关于OWASP API 请 ...

  3. NOIP 模拟 $16\; \rm Star Way To Heaven$

    题解 \(by\;zj\varphi\) 看懂题!!! 从最左穿到最右,一定会经过两个星星之间或星星和边界之间,那么我们穿过时当前最优一定是走中点 而我们要求最小的距离最大,那么我们将所有星星和边界( ...

  4. 网络游戏逆向分析-4-分析喊话call参数来源

    网络游戏逆向分析-4-分析喊话call参数来源 好久没更新了,去实习去了,大家见谅一下. 前面找到了喊话功能call函数,然后分析了它的参数有五个,分别的四个push的和一个ecx: 第一次edx = ...

  5. 被MySQL慢日志查询搞废了?3分钟教你快速定位慢查询问题!

    一条慢查询会造成什么后果?刚开始使用MySQL的开发.初级DBA 以为就是简单的查询变慢些,体验稍微有一丢丢影响,殊不知,慢查询的破坏力远不止如此.业务高峰期,这头SQL还没处理完,大量新的查询请求堆 ...

  6. element ui loading加载开启与关闭

    参考:https://blog.csdn.net/qq_41877107/article/details/87690555 Vue项目引入element-ui,之后,将以下代码写入 mounted() ...

  7. C#综合细说进程、应用程序域与上下文

    引言 本文主要是介绍进程(Process).应用程序域(AppDomain)..NET上下文(Context)的概念与操作. 虽然在一般的开发当中这三者并不常用,但熟悉三者的关系,深入了解其作用,对提 ...

  8. css - rem和vw

    css - rem和vw 物理像素 物理像素在不同的设备中1px里可以容纳的像素颗粒是不相同的,所以1px这个单位其实也是有N个像素颗粒填充的.同一尺寸屏幕的每个像素点所能容纳的像素颗粒越多显示效果越 ...

  9. Java异常与异常处理

    异常体系结构 1.所有异常都继承于Throwable类,其下有两大子类: (1)Error类:错误,一般编程人员不太接触,如虚拟机错误.线程死锁.硬伤:使程序崩溃 (2)Exception类:异常,编 ...

  10. Linux centos 安装 JDK 8

    一.下载JDK 官方下载 # 下载地址 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151. ...