BrowserEngine.java 5.98 KB
package com.essa.framework;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;

public class BrowserEngine {  
    
    private static String browserName;  
    private String serverURL;  
    private String buyerURL;
    private static WebDriver driver;  
    private static String env;
      
    public void initConfigData() throws IOException{  
          
        Properties p = new Properties();  
        // 加载配置文件  
//        InputStream ips = new FileInputStream(".\\src\\main\\resources\\TestConfig\\config.properties");  
        InputStream ips = new FileInputStream(".\\config.properties");  
        p.load(ips);  
          
        Logger.Output(LogType.LogTypeName.INFO, "开始从配置文件中选择浏览器");  
//        browserName=p.getProperty("browserName");//使用jframe要注释
        Logger.Output(LogType.LogTypeName.INFO, "所选择的浏览器类型为: "+ browserName); 
        if (env=="DIT") {
        	serverURL = p.getProperty("DIT"); 
        	buyerURL = p.getProperty("BDIT");
        	}else if (env =="HOTFIX") {
        		serverURL = p.getProperty("HOTFIX");
        		buyerURL = p.getProperty("BHOTFIX");
			}else if (env == "UAT") {
				serverURL = p.getProperty("UAT"); 
				buyerURL = p.getProperty("BUAT");
			}else {
				serverURL = p.getProperty("SIT"); 
				buyerURL = p.getProperty("BSIT");
			}
        Logger.Output(LogType.LogTypeName.INFO, "所测试的环境为:"+ env);  
        ips.close();  
    }  
    /**
     * bpms环境初始化
     * @param environment
     * @param browser
     */
    public static void setInit(String environment,String browser) {
    	browserName = browser;
    	env = environment;
    }
      
    /**
     * bpms获取地址方法
     * @return
     */
    public WebDriver getBrowser(){  
        
    	if(browserName.equalsIgnoreCase("Firefox")){  
        	
            System.setProperty("webdriver.gecko.driver", ".\\src\\main\\resources\\geckodriver.exe");    
            driver = createFireFoxDriver();  
            Logger.Output(LogType.LogTypeName.INFO, "正在启动FireFox浏览器");  
              
        }
    	else if(browserName.equals("Chrome")){  
//    		System.setProperty("webdriver.chrome.driver", ".\\src\\main\\resources\\chromedriver.exe"); 
            System.setProperty("webdriver.chrome.driver", ".\\chromedriver.exe");  
            driver= new ChromeDriver();  
            Logger.Output(LogType.LogTypeName.INFO, "正在启动Chrome浏览器");  
              
        }else if(browserName.equalsIgnoreCase("IE")){  
              
            System.setProperty("webdriver.ie.driver", ".\\src\\main\resources\\IEDriverServer.exe");  
            driver= new InternetExplorerDriver();  
            Logger.Output(LogType.LogTypeName.INFO, "正在启动IE浏览器");  
        }
    	driver.manage().window().maximize();  
        Logger.Output(LogType.LogTypeName.INFO, "窗口最大化");
        driver.get(serverURL);  
        Logger.Output(LogType.LogTypeName.INFO, "打开URL: "+ serverURL);  
        callWait(5);  
        return driver;  
    }  
   
    /**
     * buyer获取浏览器,并读取buyer的地址
     * @return
     */
    public WebDriver buyerGetBrowser() {
    	if (browserName.equals("Chrome")) {
//    		System.setProperty("webdriver.chrome.driver", ".\\src\\main\\resources\\chromedriver.exe");
    		System.setProperty("webdriver.chrome.driver", ".\\chromedriver.exe"); 
    		driver= new ChromeDriver();  
            Logger.Output(LogType.LogTypeName.INFO, "正在启动Chrome浏览器");  
		}
    	driver.manage().window().maximize();  
        Logger.Output(LogType.LogTypeName.INFO, "窗口最大化");
        driver.get(buyerURL);  
        Logger.Output(LogType.LogTypeName.INFO, "打开URL: "+ buyerURL);  
        callWait(5);  
        return driver;  
    }
      
    /* 
     * 关闭浏览器并退出方法 
     */  
      
    public void tearDown() throws InterruptedException{  
          
        Logger.Output(LogType.LogTypeName.INFO, "关闭浏览器");  
        driver.quit();  
        Thread.sleep(3000);  
    }  
      
    /* 
     * 隐式时间等待方法 
     */  
    public void callWait(int time){  
          
        driver.manage().timeouts().implicitlyWait(time, TimeUnit.SECONDS);  
        Logger.Output(LogType.LogTypeName.INFO, "设置隐性等待"+time+" 秒");  
    }  
      
      
    /* 
     * createFireFox Driver 
     * @Param: null 
     * @return: WebDriver 
     */  
      
    private WebDriver createFireFoxDriver() {  
          
        WebDriver driver = null;  
        FirefoxProfile firefoxProfile = new FirefoxProfile();  
  
        firefoxProfile.setPreference("prefs.converted-to-utf8", true);  
        //set download folder to default folder: TestDownload  
        firefoxProfile.setPreference("browser.download.folderList", 2);  
        firefoxProfile.setPreference("browser.download.dir", ".\\TestDownload");  
          
        try {  
                driver = new FirefoxDriver();  
        } catch (Exception e) {  
            Logger.Output(LogType.LogTypeName.ERROR, e.getMessage());  
            Logger.Output(LogType.LogTypeName.ERROR, "Failed to initilize the Firefox driver");  
        }  
        return driver;  
    }  
    public  void anQuan() {
    	 // 创建DesiredCapabilities类的一个对象实例  
        DesiredCapabilities cap=DesiredCapabilities.chrome();  
        // 设置变量ACCEPT_SSL_CERTS的值为True  
        cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
        Logger.Output(LogType.LogTypeName.INFO, "设置浏览器可以打开不安全链接");
    }
}