修改Firefox的配置文件:FirefoxDriver可以通过自己设置Firefox的配置文件,如启动浏览器时,加载Firebug插件。
CODE:
- File file = new File(".\\res\\firebug-1.9.1-fx.xpi");
- FirefoxProfile firefoxProfile = new FirefoxProfile();
- try {
- firefoxProfile.addExtension(file);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- firefoxProfile.setPreference("extensions.firebug.currentVersion","1.9.1");
复制代码例子: CODE: - package demo;
- import java.io.File;
- import java.io.IOException;
- 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.firefox.FirefoxProfile;
- import org.openqa.selenium.support.ui.ExpectedCondition;
- import org.openqa.selenium.support.ui.WebDriverWait;
- public class DemoUseFirefox {
- public static void main(String[] args) {
- // 创建一个WebDriver实例
- File file = new File(".\\res\\firebug-1.9.1-fx.xpi");// firebug插件的本地位置
- FirefoxProfile firefoxProfile = new FirefoxProfile();
- try {
- firefoxProfile.addExtension(file);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- firefoxProfile.setPreference("extensions.firebug.currentVersion","1.9.1");
- WebDriver driver = new FirefoxDriver(firefoxProfile);
- // 访问google
- driver.get("http://www.google.com");
- // 另一种访问方法
- WebElement element = driver.findElement(By.name("q"));
- // 输入搜索关键字
- element.sendKeys("Selenium");
- // 提交表单 WebDriver会自动从表单中查找提交按钮并提交
- element.submit();
- // 检查页面title
- System.out.println("Page title is: " + driver.getTitle());
- // google查询结果是通过javascript动态呈现的.
- // 设置页面等待10秒超时
- (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
- public Boolean apply(WebDriver d) {
- return d.getTitle().toLowerCase().startsWith("selenium");
- }
- });
- // 显示查询结果title
- System.out.println("Page title is: " + driver.getTitle());
- // 关闭浏览器
- driver.quit();
- }
- }
复制代码Internet Explorer Driver:该驱动需要一个dll文件,故只能在windows系统下使用。所有Selenium版本的都有对xp下的IE6,7,8和windows7下的IE9支持。 用法: CODE: - WebDriver driver = new InternetExplorerDriver();
复制代码CODE: - package demo;
- import org.openqa.selenium.By;
- import org.openqa.selenium.WebDriver;
- import org.openqa.selenium.WebElement;
- import org.openqa.selenium.ie.InternetExplorerDriver;
- import org.openqa.selenium.support.ui.ExpectedCondition;
- import org.openqa.selenium.support.ui.WebDriverWait;
- public class DemoUseIE {
- public static void main(String[] args) {
- // 创建一个WebDriver实例
- WebDriver driver = new InternetExplorerDriver();
- // 访问google
- driver.get("http://www.google.com");
- // 找到文本框
- WebElement element = driver.findElement(By.name("q"));
- // 输入搜索关键字
- element.sendKeys("Selenium");
- // 提交表单 WebDriver会自动从表单中查找提交按钮并提交
- element.submit();
- // 检查页面title
- System.out.println("Page title is: " + driver.getTitle());
- // google查询结果是通过javascript动态呈现的.
- // 设置页面等待10秒超时
- (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
- public Boolean apply(WebDriver d) {
- return d.getTitle().toLowerCase().startsWith("selenium");
- }
- });
- // 显示查询结果title
- System.out.println("Page title is: " + driver.getTitle());
- // 关闭浏览器
- driver.quit();
- }
- }
复制代码优点:
- 运行于真正的浏览器,且支持各种用户终端的javascript。
缺点:
- IE Driver只能工作在windows下
- 运行速度相对较慢
- 大部分版本下XPach没有原生支持,由于Sizzle是自动注入,所以运行速度低于其他浏览器,CSS渲染也比较慢;
- CSS不是原生支持IE6和IE7的,Sizzle是强行注入的;
- IE8,9是原生支持CSS的,但是他们不完全支持CSS3;
需要的配置项:
在ie7还有win7和vista系统下,我们必须将浏览器设置成安全模式
如果要使用鼠标事件,必须确定浏览器是100%缩放的
Chrome Driver:是一个独立的服务器,是由Chromium项目组协助开发的。ChromeDriver由三个部件组成:chrome浏览器本身,支持ChromeDriver的语言和支持ChromeDriver和Chrome之间通信的工程。使用ChromeDriver必须启动一个后台程序(即:支持ChromeDriver的语言和支持ChromeDriver和Chrome之间通信的工程)。
用法:
CODE:
- WebDriver driver = new ChromeDriver();
复制代码例子: CODE: - package demo;
- 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.support.ui.ExpectedCondition;
- import org.openqa.selenium.support.ui.WebDriverWait;
- public class DemoUseChrome {
- public static void main(String[] args) {
- // 配置服务器
- System.setProperty("webdriver.chrome.driver",
- ".\\res\\chromedriver.exe");
- // 创建一个WebDriver实例
- WebDriver driver = new ChromeDriver();
- // 访问google
- driver.get("http://www.google.com");
- // 找到文本框
- WebElement element = driver.findElement(By.name("q"));
- // 输入搜索关键字
- element.sendKeys("Selenium");
- // 提交表单 WebDriver会自动从表单中查找提交按钮并提交
- element.submit();
- // 检查页面title
- System.out.println("Page title is: " + driver.getTitle());
- // google查询结果是通过javascript动态呈现的.
- // 设置页面等待10秒超时
- (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
- public Boolean apply(WebDriver d) {
- return d.getTitle().toLowerCase().startsWith("selenium");
- }
- });
- // 显示查询结果title
- System.out.println("Page title is: " + driver.getTitle());
- // 关闭浏览器
- driver.quit();
- }
- }
复制代码优点: 运行在真正的浏览器上,且支持javascript; 由于Chrome是Webkit内核的浏览器,所以Chrome Driver可以一定程度上测试Safari。但是需要注意的是Chrome使用自己的V8 javascript引擎,而Safari是Nitro引擎,在javascript的执行上还是有区别的。 缺点: 运行速度低于HtmlUnit Driver Chrome高级设置: 我们可以使用一些命令行指令来配置浏览器,类似Firefox。如最大化浏览器: CODE: - DesiredCapabilities capabilities = DesiredCapabilities.chrome();
- capabilities.setCapability("chrome.switches", Arrays.asList("--start-maximized"));
- WebDriver driver = new ChromeDriver(capabilities);
复制代码例子: CODE: - package demo;
- import java.util.Arrays;
- 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.remote.DesiredCapabilities;
- import org.openqa.selenium.support.ui.ExpectedCondition;
- import org.openqa.selenium.support.ui.WebDriverWait;
- public class DemoUseChrome {
- public static void main(String[] args) {
- // 配置服务器
- System.setProperty("webdriver.chrome.driver",
- ".\\res\\chromedriver.exe");
- // 创建一个WebDriver实例
- DesiredCapabilities capabilities = DesiredCapabilities.chrome();
- capabilities.setCapability("chrome.switches",
- Arrays.asList("--start-maximized"));
- WebDriver driver = new ChromeDriver(capabilities);
- // 访问google
- driver.get("http://www.google.com");
- // 另一种访问方法
- // driver.navigate().to("http://www.google.com");
- // 找到文本框
- WebElement element = driver.findElement(By.name("q"));
- // 输入搜索关键字
- element.sendKeys("Selenium");
- // 提交表单 WebDriver会自动从表单中查找提交按钮并提交
- element.submit();
- // 检查页面title
- System.out.println("Page title is: " + driver.getTitle());
- // google查询结果是通过javascript动态呈现的.
- // 设置页面等待10秒超时
- (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
- public Boolean apply(WebDriver d) {
- return d.getTitle().toLowerCase().startsWith("selenium");
- }
- });
- // 显示查询结果title
- System.out.println("Page title is: " + driver.getTitle());
- // 关闭浏览器
- driver.quit();
- }
- }
复制代码
|