移动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版本号

相关推荐
大囚长29 分钟前
deepseek+ansible实现AI自动化集群部署
人工智能·自动化·ansible
IT成长日记29 分钟前
Ansible运行原理揭秘:如何用YAML脚本掌控数服务器?
运维·服务器·ansible·架构与原理
艾思科蓝 AiScholar40 分钟前
【 IEEE出版 | 快速稳定EI检索 | 往届已EI检索】2025年储能及能源转换国际学术会议(ESEC 2025)
人工智能·计算机网络·自然语言处理·数据挖掘·自动化·云计算·能源
千羽星弦1 小时前
Jenkins在Windows上的使用(二):自动拉取、打包、部署
运维·windows·jenkins
Ashmcracker1 小时前
Jenkins链接私有仓库Failed to connect to repository,stderr: No ECDSA...的问题
运维·jenkins·devops
嵌入式-老费1 小时前
Linux上位机开发实战(x86和arm自由切换)
linux·运维·arm开发
顾林海1 小时前
揭开Android ContentProvider的神秘面纱:从原理到实战
android
人间凡尔赛1 小时前
VSCode-Server 在 Linux 容器中的手动安装指南
linux·运维·服务器·docker
板鸭〈小号〉2 小时前
Linux开发工具----vim
linux·运维·vim
XD7429716362 小时前
使用 crontab 定时同步服务器文件到本地
运维·服务器