(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浏览器:
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();
}
}
(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();
}
}
在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为表示同时启动运行测试脚本的线程数。