Web自动化学习(6)
一、常用的Linux命令
二、APP出现crash或者ANR,你怎么处理?
可以先把日志过滤出来:adb logcat | findstr xxxxx(过滤日志信息) ,然后再搜索其中的关键字,比如:exception、crash,看看是哪些方法或者异常导致的问题,初步定位问题原因后,可以交给开发人员去具体查找深层原因并修复。
三、Selenium中如何保证操作元素成功率?
-
首先通过封装find方法,实现wait_for_element_ispresent(WebDriverWait);
-
在对页面进行click之前,先滚动到该元素(通过Js封装),避免在页面未加载完成前或是在下拉之后才能显示;
-
不同方式进行定位,与expected_conditions判断方法封装,循环判断页面元素出现后再操作;
-
开发人员规范开发习惯,如给页面元素加上唯一的name,id等。
四、Selenium如何处理下拉选择框?
大体上我们将下拉框分为两类:
-
标准下拉框(Select 标签 option 选项)
-
非标准下拉框
1、非标准下拉框处理
非标准下拉框处理思路:模拟手工方式两步走,先点击下拉列表展开,再点击下拉选项。
我们以百度页的高级搜索中的全部时间下拉框为例,我们的目标是选择全部时间下拉框中的最近一周。
实现代码如下:
运行之后,全部时间下拉框选择了最近一周选项:
2、标准下拉框处理
标准下拉框处理处理思路:Select模块处理,根据属性或者索引来定位。
Select提供了三种选择方法:
这里我们自己手动实现个简单的下拉框,样式有点丑,能用起来。
我们的目标是选中下拉框中的"ITester软件测试小栈2"选项,接下来使用Select提供的三种选择方法操练下。
运行之后,我们可以看到下拉框选上了"ITester软件测试小栈2"。
五、请说下unittest和pytest区别
unittest和pytest区别如下:
六、请说一下Selenium运行原理
selenium运行流程如下:
-
selenium client(python等语言编写的自动化测试脚本)初始化一个service服务,通过webdriver启动浏览器驱动程序chromedriver.exe;
-
通过RemoteWebDriver向浏览器驱动程序发送HTTP请求,浏览器驱动程序解析请求,打开浏览器,并获得sessionid,如果再对浏览器操作需携带此id;
-
打开浏览器后,所有的selenium的操作(访问地址,查找元素)均通过RemoteConection链接到remote server,然后使用execute方法调用request方法通过urlib3向remote server请求;
-
浏览器通过请求的内容执行对应动作;
-
浏览器再把执行的动作结果通过浏览器驱动程序返回给测试脚本。
运行示意图如下:
七、UI自动化缺点是什么?
1) UI自动化是非常不稳定的。网速、浏览器、脚本的健壮性和测试环境等因素都会导致UI自动化测试的失败。
2) 做UI自动化测试成本非常高,对测试人员的要求也很高。需要懂自动化测试框架,会一门编程语言,同时还需要代码逻辑清晰。
3) UI自动化搞不好会适得其反,本来是想用UI自动化来找Bug,结果Bug没找到。反倒浪费了大量的时间和资源去排查环境的问题。
4) 维护性差。当UI发生改变的时候,UI自动化测试用例就会大量失效,需要测试人员花费大量的时间去修改UI自动化测试的代码。
八、如何提升UI自动化用例的稳定性?
1) 在经常检测失败的元素前尽量加上显式等待时间,等要操作的元素出现之后再执行下面的操作;
2) 多线程的时候,减少测试用例耦合度,因为多线程的执行顺序是不受控制的;
3) 多用 try 捕捉,处理异常;
4) 尽量使用测试专用环境,避免其他类型的测试同时进行,对数据造成干扰。