Selenium DriverManager

/**
 * Created by zhangminjie on 15/3/16.
 */
public enum WebDriverManager {
    DRIVER;

    Logger log= LogManager.getLogger(WebDriverManager.class.getName());
    private WebDriver Driver=null;

    private enum  Configure{CONFIGPATH{
        @Override
        public String toString() {
            return System.getProperty("user.dir") + "/src/main/resources/conf/config.xml";
        }
    }
    }
    public enum BrowserType{CHROME,FIREFOX,IE,INTERNETEXPLORER,REMOTE_CHROME,REMOTE_FIREFOX,REMOTE_IE,REMOTE_INTERNETEXPLORER}

    public void setDriver(BrowserType browserType,URL url) {
        if(null==this.Driver){
                switch (browserType) {
                    case CHROME:
                        this.Driver = new BrowserChromeImpl().getDriver();
                        break;
                    case IE:
                    case INTERNETEXPLORER:
                        this.Driver = new BrowserIEImpl().getDriver();
                        break;
                    case FIREFOX:
                        this.Driver = new BrowserFirefoxImpl().getDriver();
                        break;
                    case REMOTE_CHROME:
                        this.Driver = new BrowserChromeImpl().getDriver(url);
                        break;
                    case REMOTE_FIREFOX:
                        this.Driver = new BrowserFirefoxImpl().getDriver(url);
                        break;
                    case REMOTE_IE:
                    case REMOTE_INTERNETEXPLORER:
                        this.Driver = new BrowserIEImpl().getDriver(url);
                        break;
                }
        }
    }

    public void setDriver() {
        Map<String,String> map=getBrowserType();
        String browserType=map.get("browserType");
        String url=map.get("url");
        try {
            if (null == url) {
                setDriver(BrowserType.valueOf(browserType.toUpperCase()), null);
            } else {
                setDriver(BrowserType.valueOf(browserType.toUpperCase()), new URL(url));
            }
        } catch (MalformedURLException e) {
            log.error("url错误", e);
        } catch (IllegalArgumentException e) {
            log.error("指定的浏览器类型不支持", e);
        } catch (NullPointerException e) {
            log.error("配置文件中,浏览器类型为空",e);
        }
    }

    public void quitDriver() {
        if (null != this.Driver) {
            this.Driver = null;
        }
    }
    public WebDriver getDriver() {

        return this.Driver;
    }

    private Map<String,String> getBrowserType() {

        Map<String, String> map = new HashMap<>();
        try {
            XMLConfiguration xmlConfiguration = new XMLConfiguration(Configure.CONFIGPATH.toString());
            xmlConfiguration.setExpressionEngine(new XPathExpressionEngine());
            String browserType= xmlConfiguration.getString("//browser/@type");
            map.put("browserType", browserType);
            String url= xmlConfiguration.getString("//browser/@url");
            map.put("url", url);
            return map;
        } catch (ConfigurationException e) {
            log.error("没有发现配置文件", e);
        } catch (Exception e) {
            log.error(e);
        }
        return null;
    }

}
时间: 2024-10-22 19:45:00

Selenium DriverManager的相关文章

selenium webdriver 学习总结-数据驱动(六)

QQ群:136924235 论坛:http://bbs.shareku.com webdriver可以结合junit中的Parameterized运行器完成数据驱动的目的,数据驱动的方式很多,可以结合csv文件,excel文件,jdbc等,下面我将结合csv,jdbc来展示如何完成数据驱动测试. 一.先给大家介绍一下如何使用Parameterized运行器,两种方式实现. 1.第一种方式,通过构造方法初始化测试数据 代码示例: package junit.parameters; import o

selenium docs

Note to the Reader - Docs Being Revised for Selenium 2.0! Introduction Test Automation for Web Applications To Automate or Not to Automate? Introducing Selenium Brief History of The Selenium Project Selenium’s Tool Suite Choosing Your Selenium Tool S

selenium RC优化代码2

一.下拉列表控件的字段输入如何在代码中实现?方法一:selenium.select("id=scope","label=所有项目");//第一个参数为字段属性值,第2个参数为下拉列表中要选择的值方法二:selenium.select("id=scope","index=1");//通过下拉列表中值的序号来识别要选择的值,序号从0开始 二.数据验证方法一:通过单元格来获取数据验证String actual = selenium.

selenium自动化测试用例需要关注的几点(二)

注:原文地址 UI映射 一个UI映射是一种机制,它存储所有的定位器的测试套件在一个地方,方便修改UI元素的路径标识符或改变在AUT.测试脚本,然后使用UI地图定位以被测试的元件.基本上,UI地图是一个存储库的测试脚本对象,对应于被测试的应用程序的UI元素. 是什么让一个UI地图有帮助吗?其主要目的是测试脚本的管理更加容易.当定位需要编辑,有一个中央位置轻松地找到对象,而不是通过搜索测试脚本代码.此外,它允许改变的标识符在一个地方,而不是在多个地方,以使更改在测试脚本,或为此事,在多个测试脚本.

selenium的使用

简介:selenium是web自动化测试的工具,它支持IE,firefox,chrome等多种浏览器,支持java,c#,python,ruby等多种脚本语言.下面以百度为实例,利用selenium做一些简单的自动化操作,最后模拟一些数据,对数据库进行操作 一.前提准备 1.selenium-java-2.45.0.jar 2.selenium-server-standalone-2.45.0.jar 3.mysql-connector-java-5.1.7-bin.jar   java连接my

浅析selenium的PageFactory模式

前面的文章介绍了selenium的PO模式,见文章:http://www.cnblogs.com/qiaoyeye/p/5220827.html.下面介绍一下PageFactory模式. 1.首先介绍FindBy类: For example, these two annotations point to the same element: @FindBy(id = "foobar") WebElement foobar; @FindBy(how = How.ID, using = &q

关于在selenium 中 webdriver 截图操作

package prictce; import java.io.File; import java.io.IOException; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.We

python selenium 处理时间日期控件(十五)

测试过程中经常遇到时间控件,需要我们来选择日期,一般处理时间控件通过层级定位来操作或者通过调用js来实现. 1.首先我们看一下如何通过层级定位来操作时间控件. 通过示例图可以看到,日期控件是无法输入日期,点击后弹出日期列表供我们选择日期,自己找了一个日期控制演示一下,通过两次定位,选择了日期 #-*- coding:utf-8 -*- import time from selenium import webdriver driver = webdriver.Chrome() driver.get

selenium+python在mac环境上的搭建

前言 mac自带了python2.7的环境,所以在mac上安装selenium环境是非常简单的,输入2个指令就能安装好 需要安装的软件: 1.pip 2.selenium2.53.6 3.Firefox44.dmg 4.Pycharm (环境搭配selenium2+Firefox46及以下版本兼容,selenium3+Firefox47+geckodriver) 一.selenium安装 1.mac自带了python2.7,python里面又自带了easy_install工具,所以安装pip用e