淘宝测试自动化测试框架

treesly 30 0 PDF 2020-07-29 02:07:39

淘宝测试自动化测试框架,个人觉得还不错,建议下载,觉得不好的勿喷,只是技术分享22示例代码参见http://www.github.com/automan下automan-client包的example文件夹3 PageModelPage Model是我们 Auto man的三大组件之一,用于将页面元素结构化的抽离出来,进行统一的页面对象库管玨,它的最大优势是灵活应对页面变化。QTP也有自凵的对象库,但是它的对象厍是在客户端的、并且是平铺式冇放管理页面上控件。与QTP不同, PageModel主要有三方面的优势:首先,允许用户根据使用的需要将页面控件有组织的、有结构的进行管理,方便对臾面控件的组织;其次,允许用户在还不确定页面控件只体属性的时候,先在对象库创建控件结构,方便用户在项目中开发未提供具体页面时候就可以开始编写代码,提高效率;最后,采用web化的方式进行管理,实现对象库控件的共亨,适合企业级的应用。这里主要给大家介绍:用于查找和定位控件的 Selector;页面 PageModel的两种组织方式 element和 submodel;及对象控件的数组模式处理 collection3. 1 Selectorselector是用于査找、定位控件的査找器。支持 JQuery语法。表3-1罗列了目前支持的所有 JQuery方法。表3-1 Selector JQuery语法表Selector解释示例#id用表示目标元< nPuT id=on1 onclick= =change stuffstatu5)vaue=5素的|dtype=rad查找 selector="#on1class目标元素的das, INPUT id= TPL password class=login-text tablndex=2用“"表示value="type=password name=TPL_password>当cass或d里面查找 selector=" login-text”(只是个例了,当然这里也包含当属性里出可以用d来找的)现#,+*S[()=>查找 selector=" red\\ login”/|或空格时,应该加转义字符\element目标元素的tag名< I FRAME style= PADDING-BOTTOM:opX; PADDING-LEFT称,不区分大小写0 X: WIDTH628x;PADD| NG-RIGHT:0px: HEIGHT(一般不单独使350px; PADDING-TOP:0px"id=_ editor class=rtb用)marginHeight=l frame Border=1margin Width =1>查找 selector=" Iframe"或见下面的多重条件多重条件目标元素应当同< FRAME style="PADD| NG-BOTTOM:0pX;PADD| NG-LEFT时满足多个查询0 X: WIDTH:628X;PADD| NG-RIGHT: OpX; HEIGHT:条件350px; PADDING-TOP: Opx id= editor class=rtbmarginHeight=1 frame Border =1marginWidth=1>查找 selector=" iframe井 editor rtb”或selector=" iframe . rtb#_ editor”也可以少写点条件的,能唯一确定了就好了,如 selector=”# editorparent>child目标元素是一个日hlil="1ogo"容易确定的元素B-ahref=http://www.taoba查找 selector=”"#logo>aancestor目标元素是另descendant个容易确定的元ul class=“tabs"id=“ T Logintab分口ic1ass=“ tab standar d素的后代(子孙),白…< dir class-"bo由< span c1ass="rc-t使用空格F- p. register-btn img"eqo目标元素不能唯口·( class="1ogim- notlce确定时,可以指由Kahrefhttp:servic白taobao定是第几个。从0C-ahref=http://servicetaobaocg开中i上①i+找第一个下的第二个a,使用査找selector=.login- notice>li: eqo)>a: eq(1)可代表任意tag不经常使用比1 Tr class= box dynamI C-mode⊥0g1I-bzsE.ul class="tabs" id="] LoginTabs">11s三“b三tA,田19 ecure mode selected找u下的两个使用查找 selector=“# Login Tabs>*”,这时u下所有的儿子都会返回。当然,也可以用 selector=“ Login Tabs>i"。多个元素的返回,参见 Collection填写说明name=auel目标元素不能唯< INPUT name= names value=5一确定时,可用他查找 selector=" nput[name= names\\n\]的属性做过滤当属性里出现#:&,+*~:"!^S[]()=>/|或空格时,该加转义宁符\级匹配所有跟在abel后面的

, span属性:name存在这个属性如 input[id]返冋所有存在id的 Input元素name^=va|ue]属性要以vaue开始name=value]|属性不为vauename= Fvalue]属性为 value,如nput[name=qnameS=vae属性以vue结尾name=valu属性包含vae过滤st获取匹配的第个元素,相当li>list item 1list item 2
  • list item 3
  • list item 4list item 5 list item1]last获取匹配的最后list item 2s/li>
  • list item 3
  • : li list item 4使用:“i:as结果:[< i>list item5]查找所有不包含 id 使用:" input:not([id])结果:[< input name=" apple"/>]even查找表格的索引|Header 1Value 1td> Value 2s/tr>/table使用EH*:[tr>Header 1, value2odd查找表格的索引Header 1Value 1Value 2/tabl使用:"tr:odd"结果:[Vaue1]gt查找第二第三行, Header1/trt r> value 2s/tiValue 1, Value/d>]查找第一第二行,|tae即索引值是0和 Header1 Value1ctr>value 2s/tr使用:“t:t(2)Ei: Header 1, value1]contains建设中…没有< divsJohn resig George Martin Malcom John sinclair
    dⅳ元素使用:"di结果:【< div>John ResigMalcom JohnSinclairs/div> Iempty查找所有不包含td>td>的空元素Value 2,]给所有包含p元sp>He/>/dv素的d元素添< div>Hello again!Vaue1,< td>value2子元素:first-child匹配第一个子元Johns/i>frst只匹配一个|<>Kar<元素,而此选择符|<> Brandons/i将为每个父元素匹配一个子元素
  • GlenRalph使用:"uli: first- child"结果:[<|i>John,i>Glen]ast-child匹配最后一个子Kark/i素,而此选择符将|<|> BrandonGlen
  • Tane
  • li> Ralphs/li>
    使用:" ul li last- child结果:[<|> Brandon,
  • Ralph]nth-child匹配其父元素下JohnKark
  • Brandons/i/ul>
  • GlenTane
  • li>Ralphs/i>使用:hild (1)结果:[
  • Kark,<|i>Tane
  • ]only-child如果某个元素是父元素中唯一的-JohnKak/i少
  • Brandons/如果父元素中含|有其他元素,那将不会被匹配。
  • GlenGen]3.2 Element submodelE| ement和 Submode是 pagemodel的两种组织方式,前者是控件的最小操作单位,即下面不能再有子结点;后者是一个区块,下面可以有多个子结点, submode|下面可以有多个 element和 submodel。如图3-2所示: My CartAge这个页面下有一大的 submodelmy cart records,下面可以包含多个子 submodel,每个子 submode下面会有各自的 element,如 shop info下面就有两个 element,分别是: chk choose shop和shop_ mjs info。显然用户可以通过这样的类似搭积木的方式,可以将一个平面page立体画起来,方便对控件的管理。至于将怎样的一个区域定义为一个 submode用户可以根据自己需要定义。又中文MyCartPage > my_cart_ records > shop_info > chk_ choose_shopau my car.records K⑥ Element C日② record infos择店铺枉Q帮動i for Shon#肋集合:◎是@至鱼帮助在止的时□0帮助emen(出如一盐使用示等,不会在运行志中已对保存删除此控仁图32 submodel和 element示意图3.2.1 ElementElement是贞面控件的最小单位,在 PageModel上配置的 element的时候会需要我们填写元素类型,因为不同的控什类型有不同的操作方法。例如: textfield的控什会有set方法,而 button类型的控件有 click方法。另外如何判断一个页面控件是什么类型的,也是我们需要知道的,表3-3列出了新增e| ement类型说明及具有的方法。表3-3 element类型及方法Element对应页面后台对应类犁方法继承父使用场景类型控件tag类方法默认Any(任何|AWat: AElemenclick,text控件点击,取值等tagget, exist?Button ButtonAWatir: AButton clickclick对 button框的点text,get,击xist?CheckBo Input(type AWatir: ACheckBset, clearclick对 CheckBox框的=checkbox oxtext, get选择和取消选择exist?LinkLA等可 AWati: ALinklickclick对ink的点击以被点击text, get的节点existTextField| Input, text AWatir: ATextFiel setclick对普通输入框的area, text dtext,get输入操作exist?SelectLis SelectAWatir: ASelectLi set, selected click对下拉框的选择vaue, options|text,get,操作exist?noWt会导致弹 AWati: ANoWait| clicktext,get,当点击之后有系出框出现| Elementexist?统弹出框的控件的节点,的点击操作如 buttoninput等Radioinput(type AWatir: ARadio set, clear对Rado框的选择radio)text, get和取消选择xist?rich_text BodyAWatir: AlnnerTe setclick对富文本框的输xtsetElementtext,get入操作exist?322 Submodel与 element的相对路径我们需要査找一个 element时需要填与 selector,而这个 selector就是在一个范围内用什么方式能找到这个控件。所以当我们直接在这个page下定义了 element,那你填写的selector就是在这个页面内查找这个控件,当我们的 element是定义在 submodel下的,那我们的 selector只要写在这 submodel下的能找到这个控件即可,这个就是相对路径查找。举例说明:如图3-4所示,现在需要定位到控件“秋冬打底裤”+家图 le Find Lisle Vien Cline Inages时ttext淘宝网ADIV cla:Fr 950 i+pg主隔淘吧导clis: W>请输入要搜索的溶q搜索c邻日关上升一周关注门更多苍单1于1F尚限数码鸡s秋层靴于故品家兵版饰旁食品雳4修息长款毛衣4们们相思红I521专函车[具把物榜图3-4定义的 submode和eeme这里用两种方式查找“秋冬打底裤”

  • 用户评论
    请输入评论内容
    评分:
    Generic placeholder image 卡了网匿名网友 2020-07-29 02:07:40

    简单介绍,有点用

    Generic placeholder image 卡了网匿名网友 2020-07-29 02:07:40

    可以,是我需要的

    Generic placeholder image 卡了网匿名网友 2020-07-29 02:07:39

    阿里第二代自动化框架,还成!

    Generic placeholder image 卡了网匿名网友 2020-07-29 02:07:39

    不错,这个框架真正实现了pagemode