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

    
		
			org.seleniumhq.selenium
			selenium-java
			3.13.0
		
	
	

下载成功后会有这些jar包

selenium自动化测试(Firefox,Chrome,IE)初探_第1张图片

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;

/**
 * 名称:类的中文名称 
* 功能:对类的功能进行说明
*
* * @since JDK 1.7 * @see * @author Louka */ public class MySelenium { /** * 名称:方法的中文名称
*
* 说明:说明方法的功能和使用要点
*
* * @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个保护模式关闭

selenium自动化测试(Firefox,Chrome,IE)初探_第2张图片

 

-----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;

/**
 * 名称:类的中文名称 
* 功能:对类的功能进行说明
*
* * @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使用不同的斜杠

文档路径入下图所示:

selenium自动化测试(Firefox,Chrome,IE)初探_第3张图片

 

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

 

 

 

你可能感兴趣的:(Java)