selenium自动化测试(Firefox,Chrome,IE)初探

      项目开发到一定阶段,随着版本的不断迭代,功能不断增加,新增的功能是否影响已上线的模块,在每次版本迭代上线时都有大量的回归测试工作需要做,安排测试人员每个模块测过去费时费力,如何选择一个好的自动化测试工具,提高测试效率呢?selenium就是一个好的选择,下面就介绍一下我用selenium搭建Firefox,Chrome,IE三个主流平台测试环境的过程。

         我的本地环境是win7 64位,Firefox 57,Chrome 68,IE 11,所以我选择了selenium 3.13.0版本。

1.下载各浏览器的WebDriver驱动。

Firefox:https://github.com/mozilla/geckodriver/releases 

下载对应的v0.21.0版本 

  • Firefox 57 (and greater)
  • Selenium 3.11 (and greater)

Chrome:https://chromedriver.storage.googleapis.com/index.html 

下载对应的v2.40版本(版本对照表可以上网搜索一下)

ChromeDriver v2.40 (2018-06-07)----------Supports Chrome v66-68
ChromeDriver v2.39 (2018-05-30)----------Supports Chrome v66-68

IE:http://selenium-release.storage.googleapis.com/index.html

选择和selenium一样的版本号的IEDriverServer,分32位系统和64位系统

IEDriverServer_x64_3.13.0.zip

2.将下载的WebDriver放到浏览器文件目录中,也可以放在其他目录,后续指定驱动的路径即可

3.创建maven项目,在pom文件中引入selenium-java

    <dependencies>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-java</artifactId>
			<version>3.13.0</version>
		</dependency>
	</dependencies>
	

下载成功后会有这些jar包

4.编写测试类

package iipTest;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;

/**
 * 名称:类的中文名称 <br>
 * 功能:对类的功能进行说明 <br/>
 * <br/>
 * 
 * @since JDK 1.7
 * @see
 * @author Louka
 */
public class MySelenium {

	/**
	 * <b>名称</b>:方法的中文名称 <br/>
	 * <br/>
	 * <b>说明</b>:说明方法的功能和使用要点 <br/>
	 * <br/>
	 *
	 * @param args
	 *
	 * @see
	 */

	public static void main(String[] args) {
		int test = 1;
		if (test == 1) {
			testFirefox();
		} else if (test == 2) {
			testChrome();
		} else if (test == 3) {
			testIE();
		}
	}

	public static void testFirefox() {
		// 添加Firefox的webdriver
		System.setProperty("webdriver.gecko.driver", "D:\\Program Files\\Mozilla Firefox\\geckodriver.exe");

		// 如果你的 FireFox 没有安装在默认目录,那么必须在程序中设置
		System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox\\firefox.exe");

		// 创建一个 FireFox 的浏览器实例
		WebDriver driver = new FirefoxDriver();

		// 让浏览器访问 Baidu
		driver.get("http://www.baidu.com");

		// 获取 网页的 title
		System.out.println("1 Page title is: " + driver.getTitle());

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

	public static void testChrome() {
		// 添加Chrome的webdriver
		System.setProperty("webdriver.chrome.driver",
				"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
		// 或通过相对路径设置
		// System.setProperty("webdriver.chrome.driver","src/main/resources/drivers/chrome/v2.40/chromedriver.exe");
		// 如果你的 Chrome 没有安装在默认目录,那么必须在程序中设置
		System.setProperty("webdriver.chrome.bin", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");

		// 创建一个 Chrome 的浏览器实例
		WebDriver driver = new ChromeDriver();

		// 让浏览器访问 Baidu
		driver.get("http://www.baidu.com");

		// 获取 网页的 title
		System.out.println("1 Page title is: " + driver.getTitle());

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

	public static void testIE() {
		// 添加IE的webdriver
		System.setProperty("webdriver.ie.driver", "C:\\Program Files\\Internet Explorer\\IEDriverServer.exe");

		// 创建一个 IE 的浏览器实例
		WebDriver driver = new InternetExplorerDriver();

		// 让浏览器访问 Baidu
		driver.get("http://www.baidu.com");

		// 获取 网页的 title
		System.out.println("1 Page title is: " + driver.getTitle());

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

}

这里我的Firefox和Chrome都没有安装在默认路径下 所以都添加了属性设置指定浏览器bin文件路径,IE是系统默认路径所以没有添加bin文件路径属性

 

本次测试的效果是,打开浏览器,访问百度页面,获取页面的title,关闭浏览器。

这只是简单的测试示例,更多功能可以参考

selenium中文网:http://www.selenium.org.cn/

或相关学习博客:http://www.cnblogs.com/moonpool/tag/Selenium/

学习更丰富的用法。

 

测试过程中容易碰到的问题:

1.驱动版本不匹配,无法启动浏览器,下载对应版本驱动替换

2.浏览器安装在非默认路径,需要添加webdrive.xxx.bin属性指定浏览器路径

3.Firefox如果碰到无法访问127.0.0.1问题,可以在host文件第一行添加127.0.0.1 localhost解决

4.IE浏览器碰到安全性问题无法打开,可以在浏览器安全选项中将4个保护模式关闭

 

-----2018.08.03-----

代码改进,为了适配不同测试人员本地的浏览器版本,将浏览器驱动适配参数化


package iipTest;

import java.io.FileInputStream;
import java.util.Properties;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;

/**
 * 名称:类的中文名称 <br>
 * 功能:对类的功能进行说明 <br/>
 * <br/>
 * 
 * @since JDK 1.7
 * @see
 * @author Louka
 */
public class MySelenium {

	private Properties p;

	/**
	 * 构造方法: MySelenium.
	 *
	 * @param p
	 */
	public MySelenium() {
		this.p = new Properties();
		FileInputStream is;
		try {
			is = new FileInputStream("src/main/resources/iiptest.properties");
			p.load(is);
		} catch (Exception e1) {
			e1.printStackTrace();
		}
	}

	public void testFirefox() {
		// 添加Firefox的webdriver
		System.setProperty("webdriver.gecko.driver",
				"src/main/resources/drivers/firefox/" + p.getProperty("firefox_driver_version") + "/geckodriver.exe");

		// 如果你的 FireFox 没有安装在默认目录,那么必须在程序中设置
		System.setProperty("webdriver.firefox.bin", p.getProperty("firefox_bin"));

		// 创建一个 FireFox 的浏览器实例
		WebDriver driver = new FirefoxDriver();

		// 让浏览器访问 Baidu
		driver.get("http://www.baidu.com");

		// 获取 网页的 title
		System.out.println("1 Page title is: " + driver.getTitle());

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

	public void testChrome() {

		// 添加Chrome的webdriver
		System.setProperty("webdriver.chrome.driver",
				"src/main/resources/drivers/chrome/" + p.getProperty("chrome_driver_version") + "/chromedriver.exe");
		// 如果你的 Chrome 没有安装在默认目录,那么必须在程序中设置
		System.setProperty("webdriver.chrome.bin", p.getProperty("chrome_bin"));

		// 创建一个 Chrome 的浏览器实例
		WebDriver driver = new ChromeDriver();

		// 让浏览器访问 Baidu
		driver.get("http://www.baidu.com");

		// 获取 网页的 title
		System.out.println("1 Page title is: " + driver.getTitle());

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

	public void testIE() {
		// 添加IE的webdriver
		System.setProperty("webdriver.ie.driver", "src/main/resources/drivers/ie/" + p.getProperty("ie_driver_version")
				+ "/" + p.getProperty("ie_win_bit") + "/IEDriverServer.exe");

		// 创建一个 IE 的浏览器实例
		WebDriver driver = new InternetExplorerDriver();

		// 让浏览器访问 Baidu
		driver.get("http://www.baidu.com");

		// 获取 网页的 title
		System.out.println("1 Page title is: " + driver.getTitle());

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

}

通过junitTest调用测试代码

@Test
	public void test() {
		MySelenium s = new MySelenium();
		s.testFirefox();
	}

然后增加iiptest.properties文件

firefox_driver_version=v0.21.0
firefox_bin=D:/Program Files/Mozilla Firefox/firefox.exe

chrome_driver_version=v2.40
chrome_bin="C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

ie_driver_version=v3.13
ie_win_bit=x64

注意:这里的Firefox路径配置和chrome使用不同的斜杠

文档路径入下图所示:

 

这样可以在项目中预置多个版本的驱动,测试人员只需改动本地properties文件即可使用,测试代码不需要修改

 

 

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值