5.1 浏览器常用操作

关闭浏览器

我们已经知道了如何通过TestNG 来管理我们的测试用例,也知道如何去启动我们想要的浏览器,那么浏览器的平时常用的操作还有哪些呢?

关闭当前窗口(tab)

    driver.close()

Demo

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;

/**
 * Created by 米阳 on 18/9/2017.
 */
public class BrowserActionsDemo {
    @Test
    public void openAndClosedBrowser() throws InterruptedException {
        // 设置chromedriver系统变量
        System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
        // 启动chrome浏览器
        WebDriver driver = new ChromeDriver();
        // 为了看效果,线程等待5S
        Thread.sleep(5000);
        // 关闭当前窗口
        driver.close();
    }
}

关闭所有窗口并退出

    driver.quit()

Demo

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;

/**
 * Created by 米阳 on 18/9/2017.
 */
public class BrowserActionsDemo {
    @Test
    public void openAndClosedBrowser() throws InterruptedException {
        // 设置chromedriver系统变量
        System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
        // 启动chrome浏览器
        WebDriver driver = new ChromeDriver();
        // 为了看效果,线程等待5S
        Thread.sleep(5000);
        // 关闭所有窗口,并退出
        driver.quit();
    }
}

上面两个demo例子,最后看到的都是一样,浏览器关闭了,但事实是。close()是只关闭当前窗口,如果有多个窗口并未能关闭浏览器,我们可以查看到进程中“chromedriver.exe”的进程还在。而quit()则真正的结束测试,关闭所有窗口和浏览器并查看不到“chromedriver.exe”的进程。所以平时我们使用结束测试时,记得一定要使用quit(),避免系统资源被driver进程消耗。

打开网站(输入URL)

    get()
    driver.navigate().to();

这两个方法效果等同,除了代码量外,没区别,都是打开网站。

Demo


import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.*;

/**
 * Created by 米阳 on 18/9/2017.
 */
public class BrowserActionsDemo {
    WebDriver driver;

    @BeforeMethod
    public void openChrome() {
        // 设置chromedriver系统变量
        System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
        // 启动chrome浏览器
        driver = new ChromeDriver();

    }

    @Test
    public void getTest() {
        // 打开百度首页
        driver.get("https://www.baidu.com");
        // 等同get()方法
        driver.navigate().to("https://google.com");
    }

    @AfterMethod
    public void closedChrome() throws InterruptedException {
        // 为了看效果,线程等待5S
        Thread.sleep(5000);
        // 关闭所有窗口,并退出
        driver.quit();
    }
}

我们把TesNG的BeforeMethod和AfterMethod加到这个demo中来,再每个Test执行之前先去打开Chrome浏览器,Test执行之后等待5S钟关闭浏览器。
Demo中的Test我们通过调用WebDriver的get()方法并传入百度地址打开了百度首页。
注意:
1. 在调用get()方法时,传入的地址不能缺少协议,如http,https不能缺少。
2. get()方法一定会等页面加载完成

浏览器后退操作

    driver.navigate().back();

Demo

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.*;

/**
 * Created by 米阳 on 18/9/2017.
 */
public class BrowserActionsDemo {
    WebDriver driver;

    @BeforeMethod
    public void openChrome() {
        // 设置chromedriver系统变量
        System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
        // 启动chrome浏览器
        driver = new ChromeDriver();

    }

    @Test
    public void backTest() throws InterruptedException {
        // 打开百度首页
        driver.get("https://www.baidu.com");
        // 等同get()方法
        driver.navigate().to("https://google.com");
        // 为了看清楚效果,等待2S
        Thread.sleep(2000);
        // 浏览器后退
        driver.navigate().back();
    }

    @AfterMethod
    public void closedChrome() throws InterruptedException {
        // 为了看效果,线程等待5S
        Thread.sleep(5000);
        // 关闭所有窗口,并退出
        driver.quit();
    }
}

浏览器前进操作

    driver.navigate().forward();

Demo

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.*;

/**
 * Created by 米阳 on 18/9/2017.
 */
public class BrowserActionsDemo {
    WebDriver driver;

    @BeforeMethod
    public void openChrome() {
        // 设置chromedriver系统变量
        System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
        // 启动chrome浏览器
        driver = new ChromeDriver();

    }

    @Test
    public void backTest() throws InterruptedException {
        // 打开百度首页
        driver.get("https://www.baidu.com");
        // 等同get()方法
        driver.navigate().to("https://google.com");
        // 为了看清楚效果,等待2S
        Thread.sleep(2000);
        // 浏览器后退
        driver.navigate().back();
        // 为了看清楚效果,等待2S
        Thread.sleep(2000);
        // 浏览器前进
        driver.navigate().forward();
    }

    @AfterMethod
    public void closedChrome() throws InterruptedException {
        // 为了看效果,线程等待5S
        Thread.sleep(5000);
        // 关闭所有窗口,并退出
        driver.quit();
    }
}

页面刷新

    driver.navigate().refresh();

Demo

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.*;

/**
 * Created by 米阳 on 18/9/2017.
 */
public class BrowserActionsDemo {
    WebDriver driver;

    @BeforeMethod
    public void openChrome() {
        // 设置chromedriver系统变量
        System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
        // 启动chrome浏览器
        driver = new ChromeDriver();

    }
    @Test
    public void refreshTest(){
        // 打开百度首页
        driver.get("http://www.baidu.com");
        // 刷新当前页面
        driver.navigate().refresh();
    }
    @AfterMethod
    public void closedChrome() throws InterruptedException {
        // 为了看效果,线程等待5S
        Thread.sleep(5000);
        // 关闭所有窗口,并退出
        driver.quit();
    }
}

浏览器窗口大小设置

最大化

    driver.manage().window().maximize();

设置大小

    Dimension dimension = new Dimension(900, 800);
    driver.manage().window().setSize(dimension);

获取大小

   driver.manage().window().getSize();

设置窗口位置

    Point point = new Point(500, 600);
    driver.manage().window().setPosition(point);

获取窗口位置

    driver.manage().window().getPosition();

全屏

    driver.manage().window().fullscreen();

Demo

import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.*;

/**
 * Created by 米阳 on 18/9/2017.
 */
public class BrowserActionsDemo {
    WebDriver driver;

    @BeforeMethod
    public void openChrome() {
        // 设置chromedriver系统变量
        System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
        // 启动chrome浏览器
        driver = new ChromeDriver();

    }

    @Test
    public void windowTest() throws InterruptedException {
        // 设置浏览器大小
        Dimension dimension = new Dimension(900, 800);
        driver.manage().window().setSize(dimension);
        // 为了看清楚效果,等待2S
        Thread.sleep(2000);

        // 获取窗口大小
        Dimension dimension1 = driver.manage().window().getSize();
        int h = dimension1.getHeight();
        int w = dimension1.getWidth();
        System.out.println("h:" + h + "w:" + w);
        // 为了看清楚效果,等待2S
        Thread.sleep(2000);

        // 最大化
        driver.manage().window().maximize();
        // 为了看清楚效果,等待2S
        Thread.sleep(2000);

        // 设置窗口位置,相对屏幕左下角
        Point point = new Point(500, 600);
        driver.manage().window().setPosition(point);
        // 为了看清楚效果,等待2S
        Thread.sleep(2000);

        // 获取窗口位置,相对屏幕左下角
        Point point1 = driver.manage().window().getPosition();
        int x = point1.getX();
        int y = point1.getY();
        System.out.println("x:" + x + "y:" + y);
        // 为了看清楚效果,等待2S
        Thread.sleep(2000);

        // 全屏
        driver.manage().window().fullscreen();
    }

    @AfterMethod
    public void closedChrome() throws InterruptedException {
        // 为了看效果,线程等待5S
        Thread.sleep(5000);
        // 关闭所有窗口,并退出
        driver.quit();
    }
}

控制台输出:

image.png

注意:如果遇到无法操作浏览器,这时得检查下driver版本和浏览器版本是否匹配

获取URL 地址

driver.getCurrentUrl();

该方法返回一个String类型。

Demo

import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

/**
 * Created by 米阳 on 18/9/2017.
 */
public class BrowserActionsDemo {
    WebDriver driver;

    @BeforeMethod
    public void openChrome() {
        // 设置chromedriver系统变量
        System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
        // 启动chrome浏览器
        driver = new ChromeDriver();

    }

    @Test
    public void getURLTest() {
        driver.get("https://www.baidu.com");
        String url = driver.getCurrentUrl();
        System.out.println("获取到的URL:" + url);
    }

    @AfterMethod
    public void closedChrome() throws InterruptedException {
        // 为了看效果,线程等待5S
        Thread.sleep(5000);
        // 关闭所有窗口,并退出
        driver.quit();
    }
}

控制台输出:

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容