自动化测试总结

1、appium中xpath元素定位不到什么原因

1)xpath编写错误,或者页面有所变动

2)操作速度过快,被定位的元素没有加载出来

2、在web定位中,怎么维护定位问题(界面发生变化)

1)不要使用绝对坐标,使用相对坐标

2)把定位方法和元素单独封装,页面和测试case独立起来,减少代码维护量,做分层pageobject模式

3、web自动化测试,定位不到元素的原因及解决方案

1)动态id定位不到元素

使用xpath的相对路径方法或者cssSelector查找该元素

2)iframe原因定位不到元素

(1)需要查找的元素在某个框架里(frame)

方法:定位到给框架里,查找元素

driver.switchTo().frame(“login.frame”)

driver.switchTo().frame(driver.findElement(By.cssSelector(“iframe[frmeborder]”)))

driver.switchTo().frame(driver.findElement(By.tagName(“iframe”)));

(2)要返回到iframe外查找元素

问题:进入某个框架,找到某元素,又想找一个框架外的元素

方案:需要跳出该框架再找元素

driver.switchTo().parentFrame();

(3)不在同一个frame里面查找元素

问题:页面左边一栏属于left_frame,右侧属于right_frame,在左边需要定位右边

方案:切换到默认content driver。switchTo().defaultContent()

3)xpath描述错误----修改路径写法,或者使用css

4)页面元素未加载完成

问题:在找元素前,页面还没加载好,所以有些元素不存在

方案:等待时间,三种(强制等待,隐式等待,显示等待)

5)页面元素隐藏

问题:窗口不在最大化的情况下,前端页面元素只显示局部

方案:在找元素之前,将浏览器窗口最大化,就能显示所有的元素

driver.manage().window().maximize();

4、appium原理解析

appium是基于c/s模式的,客户端/服务端的

appium是基于webdriver协议添加对移动设备自动化api扩展而成的

appium:

会首先开启一个监听4723端口的server,接受测试脚本发送过来的对应请求,再将对应的请求发送给中间件bootstrap.jar(这里的请求不是整个文件,而是对应的命令请求,一个点击就是一个命令)

bootstrap.jar:

监听4724端口由appium发送过来的相关请求,并且将请求转换成Uiautomator可以识别的命令发给Uiautomator处理

bootstrap作用:

Bootstrap是Appium在初始化的时候推送到安卓手机上的一个UiAutomator测试脚本,该脚本的唯一一个测试方法所做的事情是在手机端开启一个SocketServer(通信模块),用来监听Appium从PC端过来的命令发送给UiAutomator来执行处理。

它会监听4724端口获得命令然后pass给UiAutomator来做处理。

bootstrap在appium中的角色

首先,Bootstrap是uiautomator的测试脚本,它的入口类bootstrap继承于UiautomatorTestCase,所以Uiautomator可以正常运行它,它也可以正常使用uiautomator的方法,这个就是appium的命令可以转换成uiautomator命令的关键;

其次,bootstrap是一个socket服务器,专门监听4724端口过来的appium的连接和命令数据,并把appium的命令转换成uiautomator的命令来让uiautomator进行处理;

最后,bootstrap处理的是从pc端过来的命令,而非一个文件

所使用的技术:

android使用instrumentation和uiautomator,ios使用uiautomation,

同时还支持firefox,并可扩展其他平台,默认开启4723端口接受wedriver请求,4723端口是appium服务的,专门和脚本打交道;

默认开启4724端口用于和android设备通讯;

5、前端和后台的bug定位

1、前端bug定位:功能,界面和兼容性有关

分析出属于接口的问题还是前端的问题

2、后台bug定位:根据后台日志

一台服务器可以部署多个应用

cat usr/local/测试服务器名称/logs 先进入到服务器的logs目录下

tail -f catalina.out 监视日志文件最新的内容

3、获取日志中常见问题:

1)编码问题

2)空指针:程序问题,一般是没有考虑到为空情况,或者主外键约束的数据为空,或者删除关联数据,导致为空

3)长度过长:测试环境修改数据库字段长度后生产环境未修改,导致报错

4)非法数据

5)内存溢出:重启

4、故障无法重现时看日志

1)看日志:根据日志定位原因,在测试环境根据日志提示构造测试环境

2)测试环境的配置与实际的工程环境和配置有哪些差异,可能的原因

测试:

1、提前测试:在需求阶段接入测试

2、让更多的人参与测试:开发人员自测,产品运营体验,发布前评审

3、规范测试流程:测试计划,测试方案,测试case都需要评审和多次与产品,开发通过

4、一定要多沟通

你可能感兴趣的:(appium,前端,服务器,python)