强烈建议通过录制生成脚本;录制记录的信息全面,平台使用智能算法,步骤记录的定位信息如果全面,则可以适应页面的变化(版本修改页面),降低脚本维护难度。
平台通过“归属窗口”与“元素定位表格”来定位一个页面元素,支持多窗口、iframe;元素定位支持id, xpath, 关键字, class, name等等。
如果要实现一个多种定位方式组合(适应页面变化,减低脚本维护、且可读性强)的脚本,一个有经验的测试开发人员可能得花一天甚至几天的时间,但通过平台录制,可能只需要2分钟时间。

一. 归属窗口

录制时,平台自动记录了每个操作步骤的归属窗口,包括窗口信息与iframe信息;如果是手动添加的步骤,需要注意“归属窗口”设置。
如果您的系统一直只有一个窗口,且iframe只有一层,平台自动容错处理,不需要设置归属窗口。

IFrame层级1表示第1级IFrame,类似selenium的driver.switch_to_frame(iframe),切换到某个IFrame(通过url与id或name定位IFrame);当IFrame为跨域时,层级必须大于1000,1000表示跨域的IFrame;1001表示第1层IFrame(即跨域IFrame里的IFrame)

二. 元素定位

录制时,平台根据自动识别元素属性,然后几乎将元素的属性全记录下来。不仅方便用户阅读,而且记录信息越全,越能精确查找元素;另外,还记录了其他元素与操作元素的关联关系,通过先查找关联元素,再查找操作元素,更加精确。
下面表格是“淘宝”页面的搜索按钮,表格里定位的记录有7条,表示有7种方式可以定位到该元素。如果由于版本更新导致该按钮的class、type、xpath发生变化3种方式定位不到,或者定位成其他元素,那么还有4种方式可以定位到该元素(注:如果有4种定位到A元素,3种定位到B元素或者找不到,平台将自动选择定位到且数量最多的A)。从而实现脚本适应版本更新,提高脚本的维护性、可读性、精确性。

1. 作用字段

定位元素表格至少需要一条作用为“定位”的记录,否则无法定位到元素。如果您的页面固定不变(没有版本更新),其实一条元素定位记录就可以满足。

1) 单独定位

表示不需要通过下面的关联表格,通过在页面直接查找对应的属性(id, xpath, index索引, class, 其他属性)来定位元素。例如上面淘宝搜索按钮可以使用class来定位到按钮,类似selenium的find_element_by_class_name

2) 关联定位

当下表格“关联关系”设置为孩子元素、上下左右关系才生效;即先在页面查找下表格的关联元素,然后根据设置的“关联关系”再来查找操作元素;通过上下左右、孩子方式让定位更加方便、精确。

例1:下面需要点击“URL链接”,可以先查找“步骤类型”这个元素,然后再查找它“右边元素”的DIV元素。

例2:下面需要页面的女装,然后元素UL具有唯一性,可以先查找UL元素后,再查找它“还在元素”的li元素。

3) 描述

描述表示该属性在页面有多个,无法用来定位元素,但可以辅助定位元素,如果“定位”得到的元素不一样,这时候描述就起到作用。

2. 兼容条件

为了一个脚本可以适应不同浏览器、不同分辨率;即在不同条件下使用不一样的记录定位。 例如:可能一个元素在IE浏览器的class为abc,在chrome浏览器的class变为cde;则为了适应不同浏览器可以添加两条记录,一条给IE用,一条给chrome用;

3. 匹配

即获取元素对应属性的值与配置的属性值比较。
“等于”表示完全匹配
“前缀”表示以设置的属性值为前缀
“包含”表示得到的属性值包含设置的值

4. 一些特殊介绍

1) 属性text

即为元素界面显示的值,例如定位淘宝的搜索按钮,它的text为“搜索”

2) xpath定位

平台的xpath是自定义的xpath,在录制时获取元素的xpath同时,获取了xpath里每个元素的信息,这些信息也可以辅助定位。目的是通过平台的智能定位算法在xpath变了(页面变化导致xpath变了,例如增加了一层或者修改input为div)也可以定位到元素,增加脚本可维护性、精确性

3) index定位

index表示索引,例如页面属性class为abc的input元素存在多个,如果需要获取第2个,可以将index的作用值设置为2

三. 手工添加修改

通过上面的介绍,平台的定位方式基本与selenium一样,即可以通过id定位元素,或者class、xpath等等。所以,如果您发现定位元素出错,您也可以手动修改,或者不需要通过录制生成,自己手动添加步骤。