Selenium自动化测试之java编程基础

本文介绍了如何在Java环境中使用Selenium库,包括设置环境、下载和配置浏览器驱动,以及集成TestNG框架进行单元测试。详细步骤涉及创建WebDriver对象、执行JS脚本、元素定位和生成HTML测试报告。
摘要由CSDN通过智能技术生成

Selenium支持多种编程语言

一、Java环境搭建
  1. 下载安装jdk8,配置环境变量;
  2. 下载Eclipse 开发工具;
  3. 下载selenium-3.14 离线包,并配置Project 项目依赖;
  4. 下载浏览器对应的WebDriver(Selenium是基于WebDriver技术的);

常用浏览器驱动下载地址:

基础代码如下:

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
//import org.openqa.selenium.firefox.FirefoxDriver;

public class webTest {

    public static void main(String[] args) throws Exception {
        /*
         * 使用谷歌浏览器,加载webdriver驱动
         * 指向chromedriver服务地址
         */
        System.setProperty("webdriver.chrome.driver", "D:\\data\\webdriver\\chromedriver.exe");
        // 创建ChromeDriver对象
        WebDriver driver = new ChromeDriver();
        /***
         * 火狐浏览器使用方法如下:
         * System.setProperty("webdriver.gecko.driver", "D:\\data\\webdriver\\geckodriver.exe");
         * WebDriver driver = new FirefoxDriver();
         ***/

        // 页面最大化
        driver.manage().window().maximize();
        // 打开指定网页
        driver.get("https://www.baidu.com");

        // 执行js脚本
        String tips = "alert('selenium自动化')";
        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript(tips);
        // 页面停留2秒
        Thread.sleep(2000);
        // 处理弹窗
        Alert confirm = driver.switchTo().alert();
        // 获取弹窗内容
        confirm.getText();
        // 相当于点击确认
        confirm.accept();

        // 获取浏览器信息title
        String stitle = driver.getTitle();
        // 断言响应结果
        if(stitle=="百度一下,你就知道")
            System.out.println("ok");
        else 
            throw new Exception("title error");

        // 定位元素
        WebElement elem = driver.findElement(By.id("kw"));
        elem.sendKeys("上海");

        // 页面停留2秒
        Thread.sleep(2000);

        // 关闭浏览器
        driver.quit();
    }

}

Selenium 提供了8种元素定位方式:

  • id
  • name
  • class name
  • tag name
  • link text
  • partial link text
  • xpath
  • css selector

这8种定位方式在Java selenium 中所对应的方法为:

  • findElement(By.id())
  • findElement(By.name())
  • findElement(By.className())
  • findElement(By.tagName())
  • findElement(By.linkText())
  • findElement(By.partialLinkText())
  • findElement(By.xpath())
  • findElement(By.cssSelector())

二、集成TestNG框架

因为在实际的web自动化测试过程中,页面很多功能繁复,必须按模块按菜单进行整合,类似于java的单元测试,而且TestNG自带HTML报告。

     1. 下载TestNG 离线包,解压后放到/eclipse/dropins/plugins/目录,重启Eclipse生效;

     2. 给Project 配置TestNG,Project 上点击右键选"Build Path"--"Add Libraries…";

     3. 选择"TestNG",点击Next至Finish结束;

至此,TestNG框架集成OK,开始创建TestNG class进行编码。

     4. Project 的src上点击右键选 "New"--"Other";

     5. 在弹出的界面中选择 "TestNG"--"TestNG class",点击Next;

     6. 接着在界面中输入Class name(自定义),并勾选 "@BeforeTest" 和 "@AfterTest" 后点击Finish。

集成TestNG后的代码如下:

package unittest;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.Reporter;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.AfterTest;

public class webTest {
    // 创建ChromeDriver对象
    WebDriver driver = new ChromeDriver();

    @Test
    public void case_01() throws Exception {
        // 执行js脚本
        String tips = "alert('selenium自动化测试')";
        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript(tips);
        // 页面停留2秒
        Thread.sleep(2000);
        // 处理弹窗
        Alert confirm = driver.switchTo().alert();
        // 获取弹窗内容
        confirm.getText();
        // 相当于点击确认
        confirm.accept();

        // 获取浏览器信息title
        String stitle = driver.getTitle();
        // 断言响应结果
        Assert.assertEquals(stitle, "百度一下,你就知道");

        // 根据id定位元素
        WebElement elem = driver.findElement(By.id("kw"));
        elem.sendKeys("上海");
        // 打印log
        Reporter.log("case01通过");
        // 页面停留2秒
        Thread.sleep(2000);
    }

    @Test
    public void case_02() throws Exception {
        // 执行js脚本
        String tips = "alert('web测试')";
        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript(tips);
        // 页面停留2秒
        Thread.sleep(2000);
        // 处理弹窗
        Alert confirm = driver.switchTo().alert();
        // 获取弹窗内容
        confirm.getText();
        // 相当于点击确认
        confirm.accept();

        // 获取浏览器信息title
        String stitle = driver.getTitle();
        // 断言响应结果
        Assert.assertEquals(stitle, "百度一下,你就知道");

        // 根据name定位元素
        WebElement elem = driver.findElement(By.name("wd"));
        elem.clear();
        elem.sendKeys("北京");
        // 打印log
        Reporter.log("case02通过");
        // 页面停留2秒
        Thread.sleep(2000);
    }

    @BeforeTest
    public void beforeTest() {
        // 加载webdriver驱动,指向chromedriver服务地址
        System.setProperty("webdriver.chrome.driver", "D:\\data\\webdriver\\chromedriver.exe");
        // 页面最大化
        driver.manage().window().maximize();
        // 打开指定网页
        driver.get("https://www.baidu.com");
    }

    @AfterTest
    public void afterTest() {
        // 关闭浏览器
        driver.quit();
    }

}

运行上述java文件,Project 项目下会生成test-output 目录;

打开index.html 文件即是测试报告(如下图);

到这里,Selenium+Java+TestNG 进行web自动化测试已经成功了。


三、拓展
  1. 项目使用Maven集成(管理依赖包);
  2. 采用PO(page-object)模式。

  • 44
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值