文档详情

Selenium识别Extjs控件的解决方法.pdf.pdf

发布:2017-08-24约1.87万字共22页下载文档
文本预览下载声明
EXT 框架Web 应用Selenium 自动化之xpath 在之前用到的Selenium Xpath 中,部分页面元素id 是固定的,定位相对方便;再 有,动态元素的xpath 定位也不太复杂。对于EXT 作为框架开发的Web 应用,页 面元素的id 等属性是动态的,例如用户每次登陆页面所生成页面元素的id 会发生变 化。这样一来就增加了定位元素的难度,并且在对测试用例进行抽象化时与之前的 实践也有些不同,在稍后的文章会进行记录。 在此,我先对xpath部分进行一些总结。首先是Xpath教 程/xpath/,全面的介绍了xpath语法中的重要信息。下 面用一些实例来说明,在此也要感谢ZhangFei 同学及Seleniumcn中文论坛在我学习 过程中的帮助。此外Firefox浏览器中的Xpath Checker及firebug插件对定位XPath 都是很有帮助的,大家可以参考使用。 先对XPath 做个简短介绍,之后用实例具体说明: 1.EXTJS 的页面源码是多个div 组成的,对于div id 为常量时,可用div 先定位,再 由其他标签定位,例如input field 可用label name,button 可用button 上的文字来 定位。 2.在定位更接近目标的节点时可用“//”和“/”分割路径,“//”表示相对路径,即可直接定 位到元素,不管它的位置在哪;“/”表示绝对路径,即当前目录下的直接子元素。 3.定位当前元素之上或之下的元素节点,可用轴进行定位,即以当前节点为轴的父、 子节点,例如following-sibling,preceding,preceding-sibling 等。 4.在遇有多个相匹配的元素时,可用元素index 或position()函数进行定位。 以如下这个Login 页面为例, . 1.先说选择语言栏的dropdown list,我们的操作方式是click,可以点击到选择框或 者向下箭头部分。如图,我们先用比较繁琐的xpath 找到了input field。 定位input field 也可以有更简单的xpath ,例如xpath=//input[@class= x-form-text x-form-field x-trigger-noedit ],不过此种方式仅限于页面只有一个这样的dropdown list,如果有多个,就需要通过其他的信息进行更精确的定位了,比如dropdown list 前面的名称,元素的序列号等等。例如: 或者我们也可以用dropdown list 的箭头图片“ ”,例如xpath=//label[text()=工作 状态:]//following::img[@class=x-form-trigger x-form-arrow-trigger ][1] ,同样的, 如果页面上有多个dropdownlist,我们需要通过其他信息定位想要操作的那个元素。 2.对于button,可以直接用button 上面的文字进行定位,例如: 3.对于展开页面树结构的xpath ,例如: ,操作方式是click,可通过双 击文字部分或单击“+”,“-”号图标进行操作。 先来说双击文字的xpath ,比较简单,定位到要操作的文字就可以了。 或者,我们可以通过“+”,“-”号的img 来定位,不过这里有两个问题。一个是在img 较多时,需要其他更精确信息;另一个是,展开/收缩树结构时会改变img 节点的 class 属性,在定义展开/收缩方法时需要不同的xpath ,详情请见图。 节点收起、展开时的img 中的class 不同 4. Checkbox 的xpath 定位。与dropdownlist 类似,checkbox 的标签也是input, 这里我用的是type 属性进行定位。同样的也会用到有多个checkbox 的情况,所以 需要更多的具体信息,如checkbox 后面的文字,checkbox 的序列位置。请见图。 5.这里也说一下自己在实验的时候对following 、following-sibling 和preceding、 preceding-sibling 这两对轴的一些认识,在教程中对preceding-sibling 的解释是“选 取当前节点之前的所有同级节点”,相应的following-sibling 即为“选择当前
显示全部
相似文档