zoukankan      html  css  js  c++  java
  • 《手把手教你》系列技巧篇(二十六)-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 欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利!
    个人微信公众号 个人微信
  • 相关阅读:
    JDK1.8源码阅读系列之四:HashMap (原创)
    二叉搜索树Java实现(查找、插入、删除、遍历)
    MySQL索引的索引长度问题
    JDK1.8源码阅读系列之三:Vector
    JDK1.8源码阅读系列之二:LinkedList
    JDK1.8源码阅读系列之一:ArrayList
    Java synchronized关键字用法(清晰易懂)
    两栏布局,左边定宽,右边自适应
    css使子元素在父元素居中的各种方法
    基于Vue2、WebSocket的仿腾讯QQ
  • 原文地址:https://www.cnblogs.com/du-hong/p/15222440.html
Copyright © 2011-2022 走看看