UI自动化实现多浏览器运行-java

在进行 web 网页测试的时候,往往需要测试多个浏览器的兼容性,那么如何实现一个自动化用例多浏览器运行呢?总不能每种浏览器都写一遍吧?那样重复性工作太多,而且不利于维护,本来将以 chrome、firefox 和 IE 为例进行讲解。

驱动下载地址

● chromedriver:https://chromedriver.storage.googleapis.com/index.html,根据 chrome 浏览器的版本下载对应版本的chromedriver,如果版本不匹配,会导致启动 chrome 浏览器 失败。
● geckodriver:firefox 浏览器通过 geckodriver 启动,下载地址:https://registry.npmmirror.com/binary.html?path=geckodriver/,geckodriver 的版本也要与 firefox 浏览器的版本相匹配,否则会启动失败。
● IEDriverServer:http://selenium-release.storage.googleapis.com/index.html(selenium也在此目录下下载),与firefox、chrome 不同,IE浏览器要想通过 IEDriverServer 启动成功,则 IEDriverServer 与 selenium 版本要匹配。

各浏览器驱动下载完成后,下面进入正题。

如何实现多浏览器运行

驱动下载完成,准备工作做好了。一般我们写单浏览器用例是这样的,以 chrome 为例:

@Test
public void testXxx(String dri) {
    System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
    ChromeOptions chromeOptions = new ChromeOptions();
    WebDriver driver = new ChromeDriver(chromeOptions);
    // 清除cache和cookies
    driver.manage().deleteAllCookies();
    driver.navigate().refresh();
    driver.manage().window().maximize();
    driver.get("https://www.baidu.com/");
}

这样就启动浏览器进入到百度,那现在我要在 firefox 和 IE 上也测试一下,怎么弄呢?我不想每个浏览器都写一遍上面的代码,这个情况下我们很容易想到是否可以参数化,把浏览器作为一个参数来处理呢。下面就是找一个支持参数化的测试框架,我用的是 Junit5(其它测试框架我没用过,不熟,反正原理都是一样的),那去官网(https://junit.org/junit5/docs/current/user-guide/)上看看 Junit5 可不可以满足我们的需求,很快就看到了:
在这里插入图片描述

从字面意思可以看出这个就是我们要找的东西,表示参数化测试,点进去看看:
在这里插入图片描述

是它,就是它,我们要的东西!!!@ParameterizedTest表示这是参数化用例,@ValueSource 则是传参,依葫芦画瓢,我们可以改版下上面的代码:

@ParameterizedTest
@ValueSource(strings={"ChromeDriver","FireFoxDriver","IEDriverServer"})
public void testXxx(String dri) {
    WebDriver driver;
    if(dri.equals("ChromeDriver") ) {
        System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
        ChromeOptions chromeOptions = new ChromeOptions();
        driver = new ChromeDriver(chromeOptions);
    }else if(dri.equals("FireFoxDriver")){
        System.setProperty("webdriver.gecko.driver", "geckodriver.exe");
        driver = new FirefoxDriver();
    }else if(dri.equals("IEDriverServer")){
        System.setProperty("webdriver.ie.driver", "IEDriverServer.exe");
        driver = new InternetExplorerDriver();
    }
    // 清除cache和cookies
    driver.manage().deleteAllCookies();
    driver.navigate().refresh();
    driver.manage().window().maximize();
    driver.get("https://www.baidu.com/");
}

运行一下试试:
在这里插入图片描述

成功运行,完结,撒花。


版权声明:本文为weixin_42258032原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。