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");
时间: 2025-01-11 13:44:39

Selenium学习笔记之外部化相关测试数据---xml的相关文章

【selenium学习笔记】webdriver进行页面元素定位

[selenium学习笔记]webdriver进行页面元素定位 进行Web页面自动化测试,对页面上的元素进行定位和操作是核心.而操作又是以定位为前提的,因此,对页面元素的定位是进行自动化测试的基础. 页面上的元素就像人一样,有各种属性,比如元素名字,元素id,元素属性(class属性,name属性)等等.webdriver就是利用元素的这些属性来进行定位的. 可以用于定位的常用的元素属性: id name class name tag name link text partial link te

WebServices学习笔记(四)使用services.xml文件发布WebService

四.使用services.xml文件发布WebService 前面发布webservices所建立的java类都不能有包名,这里用配置文件services.xml搭建能有包名的webservice 首先创建MyService类,在service包下 package service; import javax.jws.WebParam; public class MyService { public String getGreeting(@WebParam(name="name")Str

selenium学习笔记

Selenium-webdriver(Python)学习笔记 一.相关原理和知识 Selenium是一个关于Web的自动化测试工具,它具有免费,轻巧,支持多语言,多平台,支持分布式测试用例的执行等一系列的优点. Selenium家族大致上有四名成员,即Selenium RC,SeleniumIDE,Selenium Grid,Selenium Webdriver.笔者主要学习的Selenium Webdriver.Selenium Remote Control是一个代理服务器,它可以把各种编程语

STM32学习笔记(九) 外部中断,待机模式和事件唤醒

学会知识只需要不段的积累和提高,但是如何将知识系统的讲解出来就需要深入的认知和系统的了解.外部中断和事件学习难度并不高,不过涉及到STM32的电源控制部分,还是值得认真了解的,在本文中我将以实际代码为例详细讲解这些内容,希望对每一个阅读者有帮助. 1.外部中断 如果已经学习了SysTick系统时钟滴答实验,掌握了Cortex-M3中断的相关知识,那么外部中断也是比较好理解的,和SysTick中断一样,外部中断也是当有信号触发时,如果中断屏蔽寄存器允许触发,就会产生中断,这时CPU查找中断向量表,

Selenium学习笔记之014:键盘的用法

主要学习知识点: 键盘按键用法 键盘组合键用法 send_keys() 输入中文运行报错问题 一.键盘按键键用法: #coding=utf-8 from selenium import webdriver from selenium.webdriver.common.keys import Keys #需要引入keys包 import os,time driver = webdriver.Firefox() driver.get("http://passport.kuaibo.com/login

selenium学习笔记(下载安装)

博主自己捣鼓的接口框架先到这里 等工作上正式开始使用再后续完善需求 还是继续学习python.学编程就直接动手写 就想看看python+selenium的组合 什么都不多说.先下载安装 博主这里已经安装了pip 所以直接cmd进入python路径下的Scripts文件目录下

selenium 学习笔记 ---新手学习记录(1) 问题总结

说明:每次学习各种语言时,环境搭建访问国外网址最头疼了,现在只要是工具下载好放到自己网盘,可以随时用. 1.首先工具准备,selenium需要用到的 下载地址 访问密码 ff8f 2.我选择的语言时junit eclipse开发 junit包下载: 下载 访问密码 c23d eclipse自己百度 3.实例练习. 具体步骤百度 4.遇见的问题 等待解决的 1).如下图,如何让变量pwds每次自动加1呢?假设pwds初始值为1,我想每次自动加1,向下图所示在我运行完${pwds}+1后我打印出来结

Selenium 学习笔记---Selenium basic all in one

Selenium 是这些年非常流行的Web UI 自动化测试工具, 很多同学学习并使用过Selenium.但是一些问题仔细想来是不是让你觉得有些困惑,比如说Selenium 到底是什么东西,为什么能支持多语言编程,到底是怎么驱动浏览器工作的……不要着急,在这篇文章中我们会一一探讨这些问题 名词解释 Selenium 是什么,包含哪些组成部分 (蓝色字体为selenium 学习过程中经常会碰到的名词): 一般来说如果没有明确指明 Selenium 2.0 或 Web Driver而单说Seleni

selenium学习笔记——定位元素

这里介绍的自动化脚本是java编写的,python编写的以后会更新(看学会python的时间O(∩_∩)O~) ?(^?^*) 先介绍一下自动化测试吧~其实自动化测试是个广泛的概念,一般分为三种:自动化单元测试.自动化接口测试和UI自动化测试.自动化单元测试在国外占比70%,国内占比10%:自动化接口测试国外占比20%,国内占比20%,UI自动化测试国内占比70%,国外占比10%.这里说的占比也只是大概数据.也就是说国内现在自动化,大部分还只是UI自动化,接口自动化也只是小部分.有些公司,UI自