2.3 开始录制

2.3.1 录制第一个案例

  • 使用webs_record.py开始录制。
    当我们**准备好配置文件“Enviroment.ini”后,双击”webs_record.py“**运行录制程序,等待浏览器打开被录制网址。本教程以雪球网站登录为操作case。如下图,正常打开雪球后浏览器窗口最大化,并弹出提示框提示是否准备好测试环境,点击”确定“开始录制。

2.3.2 录制操作

pyswat的录制采用先右键定位网页元素的方式,先获取定位元素的各项属性,及点击坐标位置等内容。右键选中的网页元素会被画一个红框表示定位元素正常,并且记录到当前元素的各项属性内容,这里雪球网站的”登录“按钮通过右键是无法正常获取的(红框会画在整个网站的body体上,此时代表正常获取失效),当录制程序遇到这种元素时会开启增强模式录制元素内容,我们在录制操作上不用去理会直接下一步左键点击”登录“按钮即可。



可以看到程序记录下了点击的坐标级各项属性值(注意这里增强模式录制的属性内容会比正常模式的属性内容少)。接下来当左键点击”登录“后会弹出登陆框,我们先右键继续获取输入用户名的输入框元素,这时可以看到输入框会闪一下红框,代表获取元素成功并记录下相关属性信息。

接下来输入用户名,继续获取密码,登录等元素后操作登录按钮完成本次登录的case录制。
总体来说pyswat的录制采用先右键获取元素的方式到达录制案例的目的。当我们录制结束后,点击键盘的”end“键结束录制。此时结束录制会生成一个临时的txt文档”temp_case.txt“。大家可以打开查看具体的录制结果。注意当结束录制后,”temp_case.txt“在行末加入‘over’标识。

当我们录制完一个case后,接下来就是将”temp_case.txt“转化为excel案例case。
2018年3月12日新增,录制保存元素截图,默认保存在“temp_elements_pic”文件夹里。用于回放时针对元素图像的结果检查,详见check()方法。(3.3.1节)

2.3.3 转换案例 2excel

  • 使用2excel.py转换”temp_case.txt“,生成“temp_case.xls”案例文档。这里需要注意,转换前检查”temp_case.txt“里只存在一个‘over’标识。尽量在录制新的案例时,先删除原有的
    ”temp_case.txt“文件。转换成功后会覆盖或生成新的“temp_case.xls”,此时可以将生成的案例拷贝之自己的项目案例总表中(项目案例总表需要自己创建,维护)

2.3.4 总结

pyswat录制采用先右键获取元素的方式,所以一定要在操作上使用好右键,才能达到准确识别点击元素。结束录制点击键盘的‘end’按键。



    

2.4 回放及调试

2.4.1 回放案例

当我们成功录制好案例后,在配置文件中定义好回放的相关配置如:file(回放案例完整路径)case(案例中想要回放的case,多个case以英文分割)url(回放网址)等。在准备好回放配置后,双击运行**“webs_replay.py”**我们的回放程序,就会开始回放了。如下图程序打印日志。

当回放完成后,在根目录下也会生成“run.log”日志文件,方便对结果的检查。


日志文件清楚的记录了程序运行时间,运行案例,case,步骤,执行情况,结果等信息。
当回放时,发现有步骤报错,根据报错信息查看对应步骤,检查报错原因,然后修改,优化我们的案例。因为pyswat框架在定位查找元素同样是依据selenium的提供的API进行查找,只是在框架里对查找进行了智能算法优化,并提供给使用者多种查找组合。
举个简单的例子,看下面的案例截图

在step3中,我们录制的“属性”信息为: “tagName:A,id:,name:,value:,placeholder:,class:followStock,href:https://xueqiu.com/hq#,innertext:关注,docker:“
可以看到该元素的属性只有tag,class,innertext几个属性值。这时在selenium里只能通过find_elements_by_class_name('followStock')去查找元素,并且会找出来一个元素集合,这时回放时,程序是无法判断你是要点击具体哪个元素的。这时有几种方法去处理这样的情况,比如说
1.在pyswat框架里是可以写python脚本的,我们可以将案例中属性内容清除,通过手写脚本实现。像这样browser.find_elements_by_class_name('followStock')[0].click()。
2.由于框架在录制时是记录了点击位置坐标的,这时我们就可以把案例中属性内容清除,**换成”失去焦点“,**不需要引号。此时程序在运行到这个step时,会自动切换回放模式到物理点击上,放弃selenium的获取方式,通过鼠标的模拟点击达到点击操作的目的。
3.最后这种方式是pyswat框架比较建议的,在”输入“中通过at指定的方式关联查找内容(见截图)。具体用法会在后面的高阶部分涉及。

2.4.2 案例调试及优化

我们先来看一下一个case,雪球网站登录后发布消息的案例。截图见下方

在引言中带大家认识了案例的每列的含义,这里就不再赘述了。由于我们的案例是自动生成的,原则上除了“参数”这列是需要后期大家自己定义,其他的列都是程序根据实际录制结果而自动生成。
优化脚本建议思路:

  • 1.“步骤”由于在回放中不影响程序执行,只是为了让大家看清楚每一个step的操作含义,这里建议大家在录制的案例中对于表述不清楚的步骤项手动添加,比如“点击---->DIV”这个步骤确实没有什么实际意义,还是希望大家替换成“点击---->关闭”这类更有参考价值的文字内容;
  • 2.“输入”实际录制的是录制时大家输入的文本内容,比如在step5中我们在发布一条消息输入“test”,如果系统对于输入有做唯一性的判断或要求,这时我们的案例回放是会失败的(难道要每次回放都要修改内容?),其实只要对输入做参数化定制,修改为“random:随便说说+int(3)”。在实际回放时会自动生成文本“随便说说456”(数字是3位的随机数),这样我们的案例就会更丰满(原谅我想到了这个词)一些。具体的用法会放在后面的高阶教程中,这里只是提供给大家优化案例的思路。
  • 3.“参数”在案例中也是起到很重要的,在本case中,对于输入内容指定了参数p1,这样后面的案例某个步骤需要用到这个参数时,比如还有个输入步骤我想输入同样的内容,这时我们可以把“输入”项中原有的内容删除,只需要在“参数”项中写入p1就可以了。
  • 4.“属性”项原则是不需要大家修改的,但对于调试失败的步骤,我们需要查看案例中对应步骤的属性是不是和实际页面有差别。这里也举个例子,在录制百度页面时,对“设置”的录制,原本在页面设置的“class:pf”,而鼠标移到“设置”上点击后变为“class=pf pfhover”class会多出一个,所以针对这种情况,如果碰到失败的步骤,建议还是手动删掉这个多出的名称。

2.5 执行结果查看

2.5.1检查日志

日志文件**“run.log”**会记录每次的执行情况,需要时可以根据时间快速定位问题

2.5.2 结果柱状图

将回放结果生成**“res.png”**,生成的柱状图直观的反应本次的执行结果。

原框架手册 https://www.kancloud.cn/lamecho/pyswat/330991

猜你喜欢

转载自blog.csdn.net/weixin_41585557/article/details/80896241
2.3
今日推荐