关系经济人类预测化学自然
中准网
自然科学
知识物理
化学生物
地理解释
预测理解
本质社会
人类现象
行为研究
经济政治
心理结构
关系指导
人文遗产

操作

10月22日 夜如影投稿
  前段时间充忙的学习RF,系统学习完之后就开始动手做各种接口的测试,虽然各类的接口测试基本能跑通了,但是重复造车的问题存在太明显。RF本身内置库就已经比较丰富,比如不需要import直接就加载到内存的BuiltIn库,还有需要import的常用模块String,Collections,XML库。在前面的接口测试中,使用最多的就是这几个内置库,接口返回的数据基本都是xml格式的居多,然后自己也重复造车了,为此特地花了几天时间去学习了下内置库,主要还是学了下XML库,以下的分享都是基于XML库。
  学习XML内置库,我认为需要掌握以下几个知识点:
  第一:内置库的概念?有哪些内置库,大概都有什么关键字?有区分版本吗?跟RF版本有关么?为什么内置库有些需要import,有些不需要import?
  第二:XML内置库使用的是python的哪个标准库?对这个标准库需要有哪些基本的了解?
  第三:内置库是怎么构建起来的?基本关键字是否能灵活的使用?
  第四:有时候可能需要稍微修改下内置库,比如增加一些关键字等,该怎么修改?
  从网上和官网(http:robotframework。org)上搜到一些资料,整理如下:
  第一:内置库的基本概念?
  内置库实际在官网称为standardlibrary,就是标准库。常见的其他库比如Request,SeleniumLibrary库,官网称之为externallibrary,就是外部库,也称第三方库。标准库和外部库首先要正确的进行区分,对于标准库,这些库是直接绑定在RF内的,在
  D:Python27Libsitepackagesobotlibraries(视python安装目录变化)下可以看到,无须再下载;而外部库,是需要根据个人需要,下载后再安装导入才能使用的。对于标准库,又分两类,类似BuiltIn库是RF自动加载到内存的,安装后按下F5就能直接使
  用,不需要再次import,而XML库需要再次import才能正常使用。因为BuiltInlibrary提供了很多常用的关键字,比如ShouldBeEqual,ConvertToInteger等,所以RF就把这个常用的库自动加载到了内存。
  不同版本的RF,支持不同的内置库而且相同的内置库里的关键字可能也是不一样的,以RF3。0(使用命令robotversion查看RF版本)为例,3。0是目前最新的RF的版本,支持很多的内置库,查看D:Python27Libsitepackagesobot下的py文件,可以看到:
  基本官网写的10个标准库都能在这里面找到相应的py文件。BuiltIn,Collections,DateTime,Dialogs,Process,OperatingSystem,Remote(没有关键字,暂时不算在内),Screenshot,String,Telnet,XML。这11个库,有些是在RF2。0的时候就已经有了的,最晚的DateTime,Process,XML是在RF2。8之后才内置的,也就是说如果当前使用的是RF2。8之前的版本,内置库是无法直接importXML就是使用的,需要下载安装才能使用,这点需要注意下,不同的RF版本,相同的标准库之间也是会细微的区别,这需要仔细的去查看保准库内每个版本的使用文档。
  10个标准库,又都是做什么用的呢,这还真需要了解,而且还需要多花时间去了解每个标准库里面的关键字,这10个标准库,介绍如下:
  这个表的来源是来自官网的,官网的用户手册文档已经描述的非常详细了。学习的时候可以详细的查看官网的相关文档。
  第二:XML内置库的学习。
  从内置库的XML的源码可以看出,RF使用的是ETree来对xml进行解析的,部分源码如下:
  importcopyimportreimportostry:fromlxmlimportetreeaslxmletreeexceptImportError:lxmletreeNonefromrobot。apiimportloggerfromrobot。libraries。BuiltInimportBuiltInfromrobot。utilsimport(asserts,ET,ETSource,isstring,istruthy,pluralornotass)fromrobot。versionimportgetversionshouldbeequalasserts。assertequalshouldmatchBuiltIn()。shouldmatchclassXML(object):ROBOTLIBRARYSCOPEGLOBALROBOTLIBRARYVERSIONgetversion()xmldeclarationre。compile(!?)!?
  definit(self,uselxmlFalse):
  uselxmlistruthy(uselxml)
  ifuselxmlandlxmletree:
  self。etreelxmletree
  self。modernetreeTrue
  self。lxmletreeTrue
  else:
  self。etreeET
  self。modernetreeET。VERSION1。3
  self。lxmletreeFalse
  ifuselxmlandnotlxmletree:
  logger。warn(XMLlibraryrevertedtousestandardElementTree
  becauselxmlmoduleisnotinstalled。)
  defparsexml(self,source,keepclarknotationFalse):
  withETSource(source)assource:
  treeself。etree。parse(source)
  ifself。lxmletree:
  strip(lxmletree。Comment,lxmletree。ProcessingInstruction)
  lxmletree。stripelements(tree,strip,dict(withtailFalse))
  roottree。getroot()
  ifnotistruthy(keepclarknotation):
  NameSpaceStripper()。strip(root)
  returnroot
  python提供了几个标准库都可以对xml进行解析,之前我使用的是DOM,基于RF使用的是ETree,便开始学习了下ETree的开发文档。学习对XML文件的操作,那肯定也得对XML本身有最基本的了解,比如XML的用途,树结构,节点类型(DOM),带命名空间的xml。下面是部分的知识点的总结:
  xml是一种可扩展的标记语言。要求标记需要成对的出现(有时候会进行简写)。一个典型的xml文档如下所示:
  firstid1secondid2
  A。整个xml文档是一个文档节点,属于根节点,比如上述文档的节点就是一个根节点,一个xml文件只能有一个根节点,否则解析的时候胡报错的
  B。每个XML标签是一个元素节点,比如和,都属于元素节点,却属于的子节点。
  C。attribute值:表示节点元素的属性值,比如first有一个属性id,属性值为1;second也有id属性,属性值为2,而third没有属性。
  D。Text值:表示元素中的文本内容。比如:first的text值就为1;second没有,third也没有;
  一个xml还包含其他的内容:比如处理指令和一些注释;在python的etree标准库解析的过程中,是直接把这二个给剔除掉了。有兴趣的可以根据官网给出的开发文档,把常用的一些方法都敲一遍,主要的还是使用2个类ElementObjects和ElementTreeObjects。
  第三:RF中XML库的学习。
  在使用sudslibrary做soap协议的测试时,返回的xml是带命名空间的,之前一直不理解,对XML库进行整体的学习之后就有了很大的理解。
  XML库主要有以下几个作用(翻译于原文手册):
  A。解析一个XML文件,或一个包含XML的字符串,在一个XML元素结构中,并从中寻找某些元素,用于进一步分析(e。g。ParseXMLandGetElementkeywords)。
  B。获取元素的文本或属性(e。g。GetElementTextandGetElementAttribute)。
  C。直接验证文本、属性或全部元素(e。gElementTextShouldBeandElementsShouldBeEqual)。
  D。修改和保存它(e。g。SetElementText,AddElementandSaveXML)。
  下面按照关键字的类型大致做了以下的学习:解析的xml都是前面的xml例子
  A。最常用关键字的学习:
  B。通过xpath来搜素子节点。
  C。简单的带命名空间的xml的解析
  D。复杂的命名空间的xml解析(之前soap协议返回的xml的解析部分补充)
  这些操作基本都是围绕着对XML的读写,之前做报文测试的时候,遇到过返回的的xml是没有根元素的,如果直接使用XML库是无法进行解析的,需要加上根节点,再进行解析,于是直接写了用户自定义的库。而且当时需要从xml中读取报文字段,与测试数据组合后,再一起发给服务器,这部分也是XML库没有提供的内容。但是对返回的xml的数据进行解析,xml库做的还是比较到位。如果觉得系统带的xml库功能不够使用,或者想把几个功能整成一个功能使用,通过以上的学习基本可以修改下代码,然后自定义一个库了。
  还有几点的学习,后面还需要对RF有更深刻的了解才能有所感悟,这次的学习给我带来了一些全新的收获,以前我查找资料很少看官方文档,虽然英文过了六级,但是一看英文文档还是会头晕脑胀,这次逼着自己看了官网的标准库的开发文档和用户手册,真感觉很不错,简洁又明了,学习官网手册果然是很不错的学习方法,比去看某些博客收获更全面更权威这个技能get了
投诉 评论 转载

不去店二次保养出了什么事店不会管你刚买的新车首保完后,是不是都不愿意再去4S店保养?毕竟去4S店还是挺贵的,如果你第二次不想去4S店也是可以的,但是车出问题了,4S店会找借口不帮你质保,这就是多花钱一点的好处,……笑才济济幽默至极1、A:你这是去那儿呢?B:你为什么要问这个问题?A:你好奇心怎么这么强,问那么多干嘛!2、暑假在超市打工,第一天上班,我负责清洁地板。结果我发现一个女顾客一……回忆是时间的礼物爱,是父母送给我们的礼物;责任,是磨难送给我们的礼物;勇气,是困难送给我们的礼物;但最珍贵的却是时间送给我们的礼物回忆。小明叫你出去玩。妈妈喊道。我一听到这句话,就像飞向……适合鼠宝宝的名字大全最近不少的鼠宝宝是真的多,好多都出生了,所以鼠宝宝出生了要做的事情比较的简单,那就是给起一个好名字了,那么有的人也问了,有没有比较适合的鼠宝宝名字呢?有,很多,小编也给大家收集……想换个微信名最好听微信昵称一、北城南忆。二、故人叹三、有1种美好丶叫做回忆四、再見、舊時光五、汝勿离六、王与贱民七、初心不负八、遗失的光波九、朕要上房揭瓦……操作前段时间充忙的学习RF,系统学习完之后就开始动手做各种接口的测试,虽然各类的接口测试基本能跑通了,但是重复造车的问题存在太明显。RF本身内置库就已经比较丰富,比如不需要impo……年月日黄历黄道吉日吉时一览表2017年10月7日黄历吉日查询表2017年10月07日农历08月(大)18日星期六天秤座丁酉(鸡)年农历八月月十八日岁次:丁酉年、生肖属鸡、己酉月、丁卯日每……田园风光我喜欢水平如镜的西湖,喜欢峰峦雄伟的泰山,不过我最喜欢的还是多姿多彩的田园风光。春天,小草偷偷的从土里钻出来,伸了个大大的懒腰。河中的结冰已经融化了,田地里的耕地已经被翻……浅析北京中高考将设置可选择性作文命题今后,中华传统文化经典、革命历史题材将更多地成为中小学语文阅读和写作教学的基本素材。语文学科还将不低于10的课时用于以语文应用为主的综合实践活动,发展听说读写全方位的能力。根据……2016年有关餐桌前的谈话作文600字夜幕降临了,灯光下,我们一边吃着饭菜,一边谈论着一天的见闻。小编收集了餐桌前的谈话作文,欢迎阅读。第一篇:餐桌前的谈话又一个周末的晚上,饭后,餐桌仍然是爸爸、妈妈和……化妆的正确步骤要用到化妆产品和步骤都在这里啦防晒隔离防晒永远是护肤的最后一步,彩妆的第一步,防晒霜不是只有夏天才需要用,一年四季,做好防晒不仅可以防止晒黑,还可以有效的延缓衰老。防晒霜需要一定时间才能被吸收并……从秋天走过走着走着,我走进了秋天的世界。秋风一过,田野熟了;秋风一过,树叶也随之飘落。太阳持续的东升西落,而自己一个人寂寞地走着也成了一种属性。清晨,阳光透过窗户,枫叶被染上了火红……
那片什么的风景作文最瘦脸的运动是什么一匹造句用一匹造句大全接地气的朋友圈说说生食蔬菜减肥法瘦身效果意想不到报效祖国造句用报效祖国造句大全清明祭先烈作文500字照壁造句用照壁造句大全老师,教师节快乐作文(精选8篇)是什么让我对人工智能忧心忡忡难忘的圣诞节日记作文所无造句用所无造句大全
童年趣事江蓠馆六咏其三月榭大象玛丽被当众吊死是怎么回事乒乓球教案如何使用卫生巾(卫生棉条真人示范)js基础面试题5160道题目日系马尾怎么扎侧分马尾最时尚思想的翅膀诗歌你们了解长城厨电吗?怎么样呢?村民挖出近千斤古币报警称地下东西是国家的洗面奶过敏长痘痘该怎么消除2021年精选暖心父亲节祝福语集合55句

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找菏泽德阳山西湖州宝鸡上海茂名内江三亚信阳长春北海西安安徽黄石烟台沧州湛江肇庆鹤壁六安韶关成都钦州