Selenium java+selenium+chrome headless+maven (selenium 学习一)

wink_yang · 2019年05月08日 · 1745 次阅读

webdriver 是直接操作浏览器的原生组件,所以搭建测试环境时通常都需要先下载浏览器对应的 webdriver,webdriver 的版本要和浏览器相对应
谷歌浏览器和对应 webdriver 版本:(chrome v60+ChromeDriverv2.28)
火狐浏览器和对应 geckodriver 版本:(geckodriver v0.17.0(32 位), firefox v53.0.3)

一、pom.xml 引入 selenium 依赖 jar 包

<dependencies>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-chrome-driver</artifactId>
            <version>3.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-firefox-driver</artifactId>
            <version>3.4.0</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.11</version>
        </dependency>
    </dependencies>

二、代码

package selenium;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import java.util.concurrent.TimeUnit;

public class test {

    public WebDriver driver;

    @Test
    public void main(){
        driver.navigate().to("http://www.baidu.com");
        String title = driver.getTitle();
        System.out.println("Page title:"+ title);
        Assert.assertTrue(title.equalsIgnoreCase("百度一下,你就知道"), "Page title don't match!");
        driver.findElement(By.id("kw")).sendKeys(new  String[] {"selenium"});//找到kw元素的id,然后输入hello
        driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);
        driver.findElement(By.id("su")).click(); //点击按扭
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    }

    @BeforeClass
    public void openChrome(){
        // cherome driver
         System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
         ChromeOptions chromeOptions = new ChromeOptions();
        // 设置为 headless 模式 (无头浏览器)
         chromeOptions.addArguments("--headless");
         driver = new ChromeDriver(chromeOptions);
        driver.manage().window().maximize();
        //设置隐性等待时间
        driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);
    }

    @BeforeClass
    public void openFirefox(){
        // firefox driver
        System.setProperty("webdriver.firefox.bin", "C:\\Program Files\\Mozilla Firefox\\firefox.exe");
        System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\Mozilla Firefox\\geckodriver.exe");
        //如果你使用firefox版本低于48,例如我之前用firefox esr 45版本,就这个代码就好报错,有机会你可以试试。如果真要低于48版本的火狐上运行geckodirver.exe,那么你的代码就要使用以下这一行代码。
        // System.setProperty("webdriver.firefox.marionette","C:\\Program Files\\Mozilla Firefox\\geckodriver.exe");

        driver = new FirefoxDriver();
        driver.manage().window().maximize();
        //设置隐性等待时间
        driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);
    }

    @AfterClass
    public void afterMethod(){
        driver.quit();
    }
}

三、个人总结

学习 selenium 的过程中,老大建议我去看下 chrome headless(无头浏览器)。
什么叫无头浏览器呢?
无头浏览器就是一个没有界面的浏览器,运行过程中看不到运行的界面。
优点:
1.执行速度更快
2.减少外界的干扰,记得之前用 selenium 执行自动化打开网页操作,如果电脑中途弹出什么窗口,会导致整个浏览器崩掉卡死,会影响后面的操作无法继续
3.简化测试执行环境的搭建
4.在单机环境实现测试的并发执行

缺点:1.不能完全模拟用户的操作,由于没有实际页面完整的布局渲染,不太适用于页面布局验证的场景

参考链接:https://www.cnbeta.com/articles/soft/603969.htm
https://www.cnblogs.com/stevenx/p/7375983.html
https://github.com/mozilla/geckodriver/releases
https://time.geekbang.org/column/article/12401

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册