• selenium之多线程启动grid分布式测试框架封装(二)


    五、domain类创建

      在domain包中创建类:RemoteLanchInfo.java 用来保存启动信息。

    package com.lingfeng.domain;
    
    public class RemoteLanchInfo {
    	private String id;
    	private String name;
    	private String address;
    	
    	public String getId() {
    		return id;
    	}
    	public void setId(String id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getAddress() {
    		return address;
    	}
    	public void setAddress(String address) {
    		this.address = address;
    	}
    	
    }
    

      这个javabean就是用来保存一条配置文件中的启动信息,后面会将这个javabean封装到集合中,以后需要到这些信息的时候调用起来也方便,比如碰到了IE6哪个页面不兼容,就可以使用名称来进行截图文件的命名,这样就知道了是哪个浏览器出了问题。

    六、工具类,远程服务配置文件初始化类

       在utils包中创建java类RemoteServerInit.java

    package com.lingfeng.utils;
    
    import java.io.File;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.remote.DesiredCapabilities;
    import org.openqa.selenium.remote.RemoteWebDriver;
    
    import com.lingfeng.domain.RemoteLanchInfo;
    
    /**
     * 远程服务器初始化类
     * @author 凌风
     *
     */
    public class RemoteServerInit {
    	//存储读取配置文档
    	private static Document DOCUMENT;
    	//存储所有状态为on的远程服务端信息
    	private static Map<String,RemoteLanchInfo> allLaunchInfoMap = new HashMap<String,RemoteLanchInfo>();
    	//存储所有远程服务端浏览器启动的driver
    	private static Map<String,WebDriver> allLaunchDriverMap = new HashMap<String, WebDriver>();
    	
    	//在调用launchBrowser方法后,可用此方法获取到所有远程服务端的driver
    	public static Map<String,WebDriver> getAllLaunchDriverMap(){
    		return allLaunchDriverMap;
    	}
    	//在调用launchBrowser方法后,可用此方法获取到所有远程服务端的启动信息。
    	public static Map<String,RemoteLanchInfo> getAllLaunchInfoMap(){		
    		return allLaunchInfoMap;
    	}
    	
    	
    	public static void launchBrowser() throws DocumentException, MalformedURLException{
    
    		
    		File file = new File("src/RemoteServerLaunchInfo.xml");
    		DOCUMENT = readInitFile(file);
    		List<Element> servers = getAllRemoteServers(DOCUMENT);
    		Iterator<Element> it = servers.iterator();
    		while(it.hasNext()){
    			addWebDriver(allLaunchDriverMap,it);
    		}
    		
    	}
    
    	/**
    	 * 将启动信息以及相对应的driver存储到各自的map集合中
    	 * 
    	 * @param allLaunchDriverMap
    	 * @param it
    	 * @throws MalformedURLException
    	 */
    	private static void addWebDriver(
    			Map<String, WebDriver> allLaunchDriverMap, Iterator<Element> it) throws MalformedURLException {
    		Element e = it.next();
    		
    		String remoteAddress = e.getText();
    		String remoteID = e.attributeValue("ID");
    		String remoteName = e.attributeValue("name");
    		
    		//将启动的所有信息存储到javabean当中。
    		RemoteLanchInfo info = setRemoteLanchInfo(remoteAddress,remoteID,remoteName);
    		allLaunchInfoMap.put(remoteName, info);//启动的信息放到map集合中
    		
    		DesiredCapabilities desiredCapabilities = DesiredCapabilities.internetExplorer();
    		WebDriver driver = new RemoteWebDriver(new URL(remoteAddress), desiredCapabilities);
    		allLaunchDriverMap.put(remoteName, driver);
    	}
    
    	/**
    	 * 设置远程启动信息,作为一个作为一个对象保存到map集合中
    	 * @param remoteAddress
    	 * @param remoteID
    	 * @param remoteName
    	 * @return RemoteLanchInfo 远程启动信息
    	 */
    	private static RemoteLanchInfo setRemoteLanchInfo(String remoteAddress,
    			String remoteID, String remoteName) {
    		
    		RemoteLanchInfo info = new RemoteLanchInfo();
    		info.setAddress(remoteAddress);
    		info.setId(remoteID);
    		info.setName(remoteName);
    		return info;
    	}
    
    	public static String getHomepage(){
    		return  DOCUMENT.getRootElement().elementText("homepage");
    	}
    	/**
    	 * 将所有配置文件中的remote-server标签对象存储到list集合中
    	 * @param document
    	 * @return List<Element> 存储一个remote-server标签对象的一个集合。
    	 */
    	private static List<Element> getAllRemoteServers(Document document) {
    		List<Element> servers = new ArrayList<Element>();
    		List<Element> list = document.getRootElement().elements("remote-server");	
    		Iterator<Element> it = list.iterator();
    		
    		while(it.hasNext()){
    			Element element = (Element) it.next();
    			if(element.attributeValue("status").equals("on")){
    				servers.add(element);				
    			}
    		}
    		return servers;
    	}
    	/**
    	 * 读取配置文件,返回文件
    	 * @param file
    	 * @return Document
    	 * @throws DocumentException
    	 */
    	public static Document readInitFile(File file) throws DocumentException {
    		SAXReader reader = new SAXReader();
    		return reader.read(file);
    	}
    }
    

    未完待续!!!马上奉上!!!

  • 相关阅读:
    maven创建的quickstart项目生成可执行jar
    spring boot 修改banner
    spring boot项目打包成war
    node集成mysql——pool连接池
    adb命令模拟按键输入keycode
    Spring 全局异常处理
    程序开发中版本管理之命名规则及格式
    群晖Nas中搭建Intellij Idea的LicenseServer服务
    uml-类图书写指南
    Spring Boot + Docker + K8S 简单示例
  • 原文地址:https://www.cnblogs.com/lingfengblogs/p/4290295.html
Copyright © 2020-2023  润新知