zoukankan      html  css  js  c++  java
  • Selenium学习笔记之外部化相关测试数据---xml

    我们也可以用xml来定义一个信息更为丰富的UIMap.xml文件,比如,额外还添加控件所属的页,控件的类型,然后解析构建一个XMLParser类来读取相应的值。

     1 <?xml version="1.0" encoding="utf-8" ?>
     2 <UIMap>
     3   <Object ID="User Name">
     4     <Attributes Locator="userName" Page="Main Page" Type="Button"/>
     5   </Object>
     6   
     7   <Object ID="Password">
     8     <Attributes Locator="Password" Page="Main Page" Type="Button"/>
     9   </Object>
    10 </UIMap>

    相应的解析xml的代码:

     1     public static String getLocator(String locatorID){
     2         InputStream ins=Thread.currentThread().getContextClassLoader()
     3             .getResourceAsStream(FileConstants.XMLFILE_NAME);
     4         if(ins==null){
     5             System.out.println("Missing UIMap.xml file.");
     6             return null;
     7         }
     8         
     9         DocumentBuilderFactory fac=DocumentBuilderFactory.newInstance();
    10         DocumentBuilder builder=null;
    11         try {
    12             builder = fac.newDocumentBuilder();
    13         } catch (ParserConfigurationException pce) {
    14             System.out.println("Failing to new DocumentBuilder for runtime exception.");
    15             throw new RuntimeException(pce);
    16         }
    17         
    18         Document xmlDoc=null;
    19         try {
    20             xmlDoc = builder.parse(ins);
    21         } catch (SAXException se) {
    22             System.out.println("Failing to parse xml file for runtime exception.");
    23             throw new RuntimeException(se);
    24         } catch (IOException ie) {
    25             System.out.println("Failing to parse xml file for runtime exception.");
    26             throw new RuntimeException(ie);
    27         }
    28         
    29         XPathFactory pathFac=XPathFactory.newInstance();
    30         XPath xpath = pathFac.newXPath();
    31         
    32         XPathExpression exp=null;
    33         try {
    34             exp = xpath.compile("UIMap/Object[@ID='"+locatorID+"']/Attributes");
    35         } catch (XPathExpressionException e) {
    36             System.out.println("Failing to get locator for :"+locatorID);    
    37         }
    38         Node node=null;
    39         try {
    40             node = (Node)exp.evaluate(xmlDoc, XPathConstants.NODE);
    41         } catch (XPathExpressionException e) {
    42             
    43             e.printStackTrace();
    44         }finally{
    45             try{
    46                 if(ins!=null){
    47                     ins.close();
    48                 }
    49             }catch(Exception ex){
    50                 System.out.println("Failing to load UIMap.xml for runtime exception.");
    51                 throw new RuntimeException(ex);
    52             }
    53         }
    54         
    55         return node.getAttributes().getNamedItem("Locator").getNodeValue();
    56     }

    测试代码:

    1 selenium.type(UIMapParser.getLocator("UserName"), "seleniumtest");
    2 selenium.type(UIMapParser.getLocator("Password"), "seleniumtest");
  • 相关阅读:
    dw通过iis运行asp网站总结
    idea 连接mysql报错:Access denied for user 'root'@'localhost'(using password:YES)。
    idea 为模块添加Tomcat依赖 解决: Intelij IDEA 创建WEB项目时没有Servlet的jar包
    IntelliJ IDEA 高效率配置
    idea发布web项目在tomcat位置问题
    idea中HTML格式化时标签缩进问题
    IDEA 安装破解
    python中map()函数的用法讲解
    mac终端下svn常用命令
    SVN常用命令详解
  • 原文地址:https://www.cnblogs.com/liu-ke/p/4262220.html
Copyright © 2011-2022 走看看