zoukankan      html  css  js  c++  java
  • 对象库(UI MAP)

    目的:能够使用配置文件存储被测页面上元素的定位方式和定位表达式,做到定位数据和程序的分离。

    测试程序写好以后,可以方便不具备编码能力的测试人员进行自定义修改和配置 ;

    package dataDriverTest;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Properties;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.ie.InternetExplorerDriver;
    
    public class ObjectMap {
        public WebDriver driver;
        private Properties properties;
    
        public ObjectMap(String propFile) {
            properties = new Properties();
            try {
            
    String   encoding="utf-8";   
    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(propFile), encoding));
    FileInputStream in = new FileInputStream(propFile); properties.load(in); in.close(); } catch (FileNotFoundException e) { System.out.println("没有找到 " + propFile + " 文件!无法读取!"); e.printStackTrace(); } catch (IOException e) { System.out.println("读取 " + propFile + "文件失败! "); e.getStackTrace(); } } /* * ElementNameInPropFile 从文件中获取对象的值; locatorType : 存储对象类型; * locatorValue:存储对象的值; */ public By getLocator(String ElementNameInPropFile) throws Exception { // 根据 变量 ElementNameInPropFile ,从属性配置文件中读取对应的配置对象; String locator = properties.getProperty(ElementNameInPropFile); /* * 将配置对象中的定位类型存储到 locatorType 中 ,将定位表达式的值存储到 locatorValue 中; */ System.out.println(locator); String locatorType = locator.split(":")[0]; String locatorValue = locator.split(":")[1]; System.out.println(locatorType + locatorValue); if (locatorType.toLowerCase().equals("id")) { return By.id(locatorValue); } else if (locator.toLowerCase().equals("name")) { return By.name(locatorValue); } else if (locator.toLowerCase().equals("classname") || locatorType.toLowerCase().equals("class")) { return By.className(locatorValue); } else if ((locatorType.toLowerCase().equals("tagname")) || (locatorType.toLowerCase().equals("tag"))) { return By.tagName(locatorValue); } else if ((locatorType.toLowerCase().equals("linktext")) || (locatorType.toLowerCase().equals("link"))) { return By.linkText(locatorValue); } else if (locatorType.toLowerCase().equals("partiallinktext")) { return By.partialLinkText(locatorValue); } else if ((locatorType.toLowerCase().equals("cssSelector")) || (locatorType.toLowerCase().equals("css"))) { return By.cssSelector(locatorValue); } else if (locatorType.toLowerCase().equals("xpath")) { return By.xpath(locatorValue); } else { throw new Exception("输入的locatorType " + locatorType + "未在程序中被定义!"); } } }

    ObjectMap.properties存储的原素的表达式文件内容:

    Sohumai.Homepage.username =id:username

    Sohumai.Homepage.password =id:password

    Sohumai.Homepage.submitbutton =id:submitbutton

    测试代码:

    package testNGPractice;
    
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.ie.InternetExplorerDriver;
    import org.testng.annotations.AfterMethod;
    import org.testng.annotations.BeforeMethod;
    import org.testng.annotations.Test;
    
    import cn.gloryroad.Log;
    import dataDriverTest.ObjectMap;
    import scr.comm.OpenBrowserInfo;
    
    public class TestObjectMap {
        private ObjectMap objectmap;
        public WebDriver driver;
        private String url = "http://192.168.1.110:7001/CISS/";;
    
        @Test
        public void test() throws Exception {
            driver.navigate().to(url);
    
            try {
                objectmap = new ObjectMap("D:\objectmap.properties");
            } catch (Exception e) {
                e.printStackTrace();
    
            }
            WebElement username = driver.findElement(objectmap.getLocator("Sohumai.Homepage.username"));
            WebElement password = driver.findElement(objectmap.getLocator("Sohumai.Homepage.password"));
            WebElement submitbutton = driver.findElement(objectmap.getLocator("Sohumai.Homepage.submitbutton"));
    
            username.sendKeys("wlg3");
            password.sendKeys("88888888");
            submitbutton.click();
        }
    
        @BeforeMethod
        public void beforeMethod() {
            OpenBrowserInfo.IeDriver();
            driver = new InternetExplorerDriver();
        }
    
        @AfterMethod
        public void afterMethod() {
            driver.close();
        }
    
    }

     测试public By getLocator(String ElementNameInPropFile) throws Exception {}方法:

    package java_practice;
    
    import dataDriverTest.ObjectMap;
    import scr.comm.OpenBrowserInfo;
    
    public class T {
    
        public static void main(String[] args) {
        //    String pfile1="D:\softerWare\selenium\eclipse_workspace\objectmap.properties";
            String pfile2="C:\Users\ty\Documents\Tencent Files\316567803\FileRecv\objectMap.properties";
            //String pfile = "D:\objectmap.properties";
            String uname = "ciss.username";
            String pwd = "ciss.password";
            String a="boc.public.searchBtn";
            String b="boc.public.searchBox";
            OpenBrowserInfo.Log4jInitialize();
            ObjectMap obj = new ObjectMap(pfile2);
            System.out.println("---------------");
            try {
                obj.getLocator(a);
                obj.getLocator(b);
                obj.getLocator(pwd);
                obj.getLocator(uname);
                
    
                System.out.println("---------------");
    
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
    }
  • 相关阅读:
    迭代器&可迭代对象
    递归&栈帧空间
    locals()和globals()
    闭包
    nonlocal和global
    LEGB
    python中编码问题
    关于dict的formkeys方法注意
    深浅拷贝
    通过远程连接批量查看zookeeper服务状态和判断主从节点
  • 原文地址:https://www.cnblogs.com/linbo3168/p/6134578.html
Copyright © 2011-2022 走看看