移动Android和IOS自动化中常见问题

  1. APP测试逻辑

在app编写自动化测试用例时,通常会出现只是简单的点点点过程,然而却忽略了在实际的自动化实现过程中,软件是对app元素的判断来执行测试脚本。所以会出现在后期已经写好自动化脚本之后还会对测试用例的更新。

  1. App在测试时,每个页面的每个元素都需要点击测试其功能性,相同页面具有一致性,测试一次即可,但是相同按钮在不同页面,就需要再测试一次。
  2. Android怎么获取元素的值?其属性是什么?

答:Android也可以使用.getcondext获取元素的值,且获取的值属性为string类型。

  1. 如何正确使用可点击的id?

答:通常Android获取id时,截取"id:"后面的即可。如果只存在id值,不存在id属性通常有的前缀,这种情况下就无法通过id点击。则需要通过其他方式对元素进行点击。

  1. 如何判断当前页面是Native还是webview?

答:通过context获取当前的页面的类型。在有的页面,会出现h5被强转为Native页面,这时的页面则不支持webview操作,由于有的元素被隐藏,通过viewlist就很难点击到相应的元素,所以只能通过tap点击。

  1. 在点击之后或者页面跳转之后需要设置等待时间,使用sleep无效怎么办?

答:可以通过对静态元素(点击之后没反应的元素)进行重复点击,自带的sleep只有在不存在该元素时才会执行。

  1. Android自动化测试存在appium获取当前页面元素数据太大导致app卡死吗?

不会,数据量太大时,只是当前页面无法获取。

  1. Android自带键盘删除

newtest.clearById((AndroidDriver) driver,67,Id);

  1. 在IOS安装过程中,有什么需要注意的?

答:appium、Xcode下载的版本需要对应,各个版本都有不同的支持,同时还要注意测试机的版本,对应情况如下:

  1. 安装完成之后,如何配置环境变量?

答:mac本身是不存在环境变量配置文件的,需要新建。首先打开终端输入命令touch .bashprofile新建文件,然后输入命令vi .bash profile打开该文件,然后在文件内设置环境变量:

复制代码
export ANDROID_HOME=/Applications/Android-sdk-macosx

export APPIUM_HOME=/Applications/Appium.app/Contents/Resources/node_modules/

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

export AAPT_HOME=/Applications/android-sdk-macosx/build-tools/

export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$APPIUM_HOME/.bin:$AAPT_HOME/23.0.3/   (如果是在mac上面实现android的自动化就需要这句)

然后在退出编写的文件时注意,编写完成后按esc并输入wq再按ENTER以达到保存并退出,如果输入q则不保存直接退出。

  1. 如何查看新的软件的BundleID?

答:首先需要设置手机查看权限,在终端输入命令:sudo chmod --R 777 /var/db/lockdown/,在输入密码时,输入的密码不会显示,输入完成后直接ENTER;再输入:ideviceinstaller --l查看手机上软件的信息,即可显示软件的BundleID。

  1. 如何获取和判断元素的值?

答:获取元素的值为driver.findElementByXpath().getcondext。判断元素的值可分为完全判断和关键词判断,完全判断使用equals。但是在实际的很多地方,元素值往往很长,或者只有一些关键词不变,所以就需要使用contains进行关键词判断。

  1. IOS如何实现滑动操作?

答:由于appium的自身的限制,大概从1.3.7版本之后就不支持swipe操作,当前版本为1.4.13,因此在滑动方面存在很大约束。目前本人的操作是根据button属性的XPath路径点击,但是这样做是会出现报错并结束程序执行,因此使用try catch使程序继续执行,再根据得到的最新的显示页面对相应元素进行tap点击。由于很多需要滑动的页面不存在button属性的XPath,所以在滑动方面受到了很大的限制。以下代码可能适用于某些版本,可尝试

复制代码
#python

diretion = up | down | left | right

#标准指向滑动

driver.execute_script("mobile: scroll", [{"direction":direction}])

#基于控件的指向滑动

driver.execute_script("mobile: scroll", [{"direction":direction, element: element.id}])
  1. 一些第一次能点击,后面再点击就出现错误的特殊情况及解决方法。

答:在点击同一个XPath时,第二次无法点击且报错。可以通过对元素的其他属性来点击该元素,如name或者直接使用坐标进行tap。有的app前面版本支持根据name点击,但是到了后期版本会出现该name明明能被打印出来,但是就是在点击时报错。可以通过XPath点击或者直接tap。

  1. IOS的app在自动化测试的一些bug需要注意。
  1. 一个页面的数据量太大导致app卡死
  2. 根据name点击,会点击成别的元素
  1. Mac OS X问题appium1.4无法在mac10.10以上使用

(1) 在终端打开文件 vi

复制代码
 /Applications/Appium.app/Contents/Resources/node_modules/appium/lib/doctor/ios.js

(2) 在适当位置添加代码else if (stdout.match('10.9') !== null) {

this.osVersion = '10.9';

cb(null, "Mac OS X 10.9 is installed.");

}

10.9改为当前mac版本号

相关推荐
stormsha1 分钟前
Linux中su与sudo命令的区别:权限管理的关键差异解析
linux·运维·服务器·鸿蒙系统·ux·batch命令
快乐觉主吖25 分钟前
Unity的日志管理类
android·unity·游戏引擎
新加坡内哥谈技术33 分钟前
Meta计划借助AI实现广告创作全自动化
运维·人工智能·自动化
明月看潮生33 分钟前
青少年编程与数学 01-011 系统软件简介 06 Android操作系统
android·青少年编程·操作系统·系统软件·编程与数学
snetlogon2036 分钟前
JDK17 Http Request 异步处理 源码刨析
android·网络协议·http
zyjyyds11339 分钟前
win11系统 Docker Desktop 突然提示Docker Engine stopped解决情况之一
运维·docker·容器
Altairr40 分钟前
Docker基础(一)
运维·docker·容器·eureka
文牧之1 小时前
PostgreSQL 的扩展pageinspect
运维·数据库·postgresql
小兔子酱#1 小时前
【Docker 01】Docker 简介
运维·docker·容器
消失的旧时光-19432 小时前
Android USB 通信开发
android·java