WebDriver进行多浏览器测试

使用IE浏览器进行测试

(1)、需要从http://docs.seleniumhq.org/download/地址下载一个webDriver连接IE浏览器的驱动程序,文件名为IEDriverServer.exe.(注意:如果是64位系统,要分别打开的是32位浏览器和64位浏览器,需要分别下载对应版本的IEDriverServer.exe

(2)、把下载的文件保存在本地径盘的任意位置,在调用IE浏览器前,先将IE浏览器驱动程序的所在路径设定为系统属性值。我把驱动程序放在这个项目的lib包里。

System.setProperty("webdriver.ie.driver", "src/lib/IEDriverServer.exe");

(3)、把driver实例化为InternetExplorerDriver对象。

(4)、打开IE浏览器访问百度首页。

代码实例如下:

package cn.om;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.testng.annotations.AfterMethod;

public class IETest {
	WebDriver driver;
	String url;

	@Test
	public void IEDemo() {
		driver.get(url + "/");
	}

	@BeforeMethod
	public void beforeMethod() {
		System.setProperty("webdriver.ie.driver", "src/lib/IEDriverServer.exe");
		driver = new InternetExplorerDriver();
		url = "http://www.baidu.com";
	}

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

注意:

        IE浏览器->设置->Internet选项->安全,将Internet、本地Intranet、受信任的站点、受限制的站点四项的启用保护模式的勾选去掉,如下图。否则会打不开IE浏览器:

WebDriver进行多浏览器测试_第1张图片

使用Firefox浏览器进行测试

        firefox在介绍WebDriver的时候有介绍,这里不详细描述。
package cn.om;

import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterMethod;

public class FireFoxTest {
	
	WebDriver driver;
	String url;
  @Test
  public void firefoxDemo() {
	  driver.get(url);
      System.out.println("1 page's title is "+driver.getTitle());

      WebElement element=driver.findElement(By.id("kw"));

      element.sendKeys("zTree");

      element.submit();


      new WebDriverWait(driver,10).until(new ExpectedCondition() {
          public  Boolean apply(WebDriver d){
              return d.getTitle().toLowerCase().startsWith("ztree");
          }
      });


      System.out.println("2 page's title is "+driver.getTitle());
  }
  @BeforeMethod
  public void beforeMethod() {
      System.setProperty("webdriver.firefox.bin", "D:/Mozilla Firefox/firefox.exe");
      driver=new FirefoxDriver();
      url="http://www.baidu.com";
  }

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

}


使用Chrome浏览器进行测试

(1)、需要从http://docs.seleniumhq.org/download/地址下载一个webDriver连接Chrome浏览器的驱动程序,文件名为chromedriver.exe.

(2)、把下载的文件保存在本地径盘的任意位置,在调用Chrome浏览器前,先将Chrome浏览器驱动程序的所在路径设定为系统属性值。我把驱动程序放在这个项目的lib包里。

System.setProperty("webdriver.chrome.driver", "src/lib/chromedriver.exe");

(3)、把driver实例化为ChromeDriver对象。

(4)、打开Chrome浏览器访问百度首页。

package cn.om;

import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.testng.annotations.AfterMethod;

public class IETest {
	WebDriver driver;
	String url;

	@Test
	public void IEDemo() {
		driver.get(url + "/");
	}

	@BeforeMethod
	public void beforeMethod() {
		System.setProperty("webdriver.chrome.driver", "src/lib/chromedriver.exe");
		driver = new ChromeDriver();
		url = "http://www.baidu.com";
	}

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

使用TestNG进行并发兼容性测试

        在web项目的测试过程中,经常会进行浏览器兼容性相关性的测试工作,因为兼容性测试的工作重复性相当高,所以可以将多个浏览器的兼容性测试用例一次性执行。

        测试说明:

        分别使用IE、Chrome和Firefox浏览器,TestNG以并发方式在百度首页中搜索某个关键词。

package cn.om.elements;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.testng.Assert;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;

public class MultipleBrowserSearchTest {
	public WebDriver driver;
	String baseURL = "http://www.baidu.com";

	@Test
	public void testBaiduSearch()  {
		WebElement inputBox = driver.findElement(By.id("kw"));
		Assert.assertTrue(inputBox.isDisplayed());
		inputBox.sendKeys("selenium");
		driver.findElement(By.id("su")).click();
		try {
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Assert.assertTrue(driver.getPageSource().contains("selenium"));
	}

	@Parameters("browser")
	@BeforeClass
	public void beforeClass(String Browser) {
		if (Browser.equalsIgnoreCase("firefox")) {
			System.setProperty("webdriver.firefox.bin", "D:/Mozilla Firefox/firefox.exe");
			driver = new FirefoxDriver();
		} else if (Browser.equalsIgnoreCase("ie")) {
			System.setProperty("webdriver.ie.driver", "src/lib/IEDriverServer.exe");
			driver = new InternetExplorerDriver();
		} else {
			System.setProperty("webdriver.chrome.driver", "src/lib/chromedriver.exe");
			driver = new ChromeDriver();
		}
		driver.get(baseURL);
	}

	@AfterClass
	public void afterClass() {
		driver.close();
	}

}

当前工程的testng.xml文件的配置内容




	
	
		
		
			
		
	
	
		
		
			
		
	
	
		
		
			
		
	

代码说明:

(1)、运行代码,可以看到系统同时弹出IE、Chrome、Firefox三个浏览器窗口,并在这三个窗口中运行测试脚本中定义的操作步骤,实现了多个浏览器的并发测试。

(2)、代码中@Parameters("browser")这个注解定义了browser参数,在测试执行的过程中,这个参数的具体值由testng.xml中的来传递。

(3)、parallel="tests" 表示使用不同的线程来启动test标签定义的测试类。thread-count=3为表示同时启动运行测试脚本的线程数。

你可能感兴趣的:(自动化测试,selenium,selenium学习笔记)