java+selenium实现自动化操作浏览器

 更新时间:2025年05月14日 09:49:17   作者:北京-宏哥  
在Web自动化的操作中,我们通常需要使用一些方法来操作浏览器,这篇文章主要来和大家介绍一下在自动化测试的时候,我们常见的一些浏览器操作有哪些,希望对大家有一定的帮助

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

2.10关闭浏览器

// 关闭当前页面
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.拓展

其他方法

这些基本上在前边的文章中宏哥都介绍过了这里就简单的提一下,不做赘述了。

// 返回当前的浏览器的窗口句柄
 String currentWindowHandle = driver.getWindowHandle()
 // 返回当前的浏览器的所有窗口句柄
 Set<String> allWindowHandles = driver.getWindowHandles();
 // 返回当前页面的源码
 String currentPageSource = getPageSource()

以上就是java+selenium实现自动化操作浏览器的详细内容,更多关于java selenium操作浏览器的资料请关注脚本之家其它相关文章!

相关文章

  • Spring中的BeanDefinition注册流程详解

    Spring中的BeanDefinition注册流程详解

    这篇文章主要介绍了Spring中的BeanDefinition注册流程详解,  NamespaceHandler简单来说就是命名空间处理器,Spring为了开放性提供了NamespaceHandler机制,这样我们就可以根据需求自己来处理我们设置的标签元素,需要的朋友可以参考下
    2023-12-12
  • Springboot中JWT登录校验及其拦截器实现方法

    Springboot中JWT登录校验及其拦截器实现方法

    这篇文章主要介绍了Springboot中JWT登录校验及其拦截器实现方法的相关资料,包括引入Maven坐标、获取Token、JWT拦截器的实现和配置,通过这些步骤可以实现后端对用户登录的身份校验,需要的朋友可以参考下
    2025-11-11
  • mall整合SpringTask实现定时任务的方法示例

    mall整合SpringTask实现定时任务的方法示例

    这篇文章主要介绍了mall整合SpringTask实现定时任务的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • Mybatis查询时,区分大小写操作

    Mybatis查询时,区分大小写操作

    这篇文章主要介绍了Mybatis查询时,区分大小写操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • SpringBoot 整合 Spring-Session 实现分布式会话项目实战

    SpringBoot 整合 Spring-Session 实现分布式会话项目实战

    本文主要介绍了SpringBoot 整合 Spring-Session 实现分布式会话项目实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • java实现水果超市管理系统

    java实现水果超市管理系统

    这篇文章主要为大家详细介绍了java实现水果超市管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • Java轻松实现PDF转换为PDF/A的示例代码

    Java轻松实现PDF转换为PDF/A的示例代码

    本文将深入探讨Java环境下,如何利用专业工具将PDF转换为PDF/A格式,为数字文档的永续保存提供可靠方案,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2025-09-09
  • Lombok注解-@SneakyThrows的使用

    Lombok注解-@SneakyThrows的使用

    这篇文章主要介绍了Lombok注解-@SneakyThrows的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Java Mybatis框架由浅入深全解析下篇

    Java Mybatis框架由浅入深全解析下篇

    MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码,本文将作为最终篇为大家介绍MyBatis的使用
    2022-07-07
  • java如何判断Date是上午还是下午

    java如何判断Date是上午还是下午

    文章介绍了三种在Java中判断Date对象是上午还是下午的方法:使用Calendar类、使用Java 8的java.time包以及使用SimpleDateFormat进行格式化输出,每种方法都有代码示例和解释,帮助开发者根据具体需求选择合适的方法
    2025-03-03

最新评论