Appium使用之helloworld

本文介绍了Appium在Android自动化测试中的应用,包括其优点、缺点、安装步骤和常见问题。作者强调Appium支持多种应用类型测试且无需被测应用做特殊修改。在实际操作中,遇到的问题包括提取PIDs失败、500 Internal Privoxy Error以及中文输入异常,并给出了相应的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Demo
官网

首发于 简书

最近突发兴趣,想了解点测试方面的内容,同时自己又属于比较懒的,所以期望可以做成自动化测试,写个脚本自动运行,在版本迭代后做回归测试会比较方便,另外,我期望测试框架可以根据id等属性来定位控件,而不是如monkeyRunner那样通过坐标来定位,以便于测试不同机型,找了几个框架后最后决定先试试appium, 因此就有了这篇文章;

基于:
系统: win10 64
Appium: AppiumForWindows_1_4_16_1
脚本: python 3.5

优点(摘自<腾讯Android自动化测试实践>):

  1. 支持多种应用程序测试: Native app(ios/android), hybrid app 和 web app
  2. 不需要被测应用做特殊修改:不需要引入任何额外的测试sdk,不需要添加其他权限,不需要修改签名等…(不过我安装的时候发现会安装两个小程序,影响不大)
  3. 对测试脚本的语言不做限制(比较喜欢这样的跨平台跨语言的,迁移方便)
  4. 支持应用间交互测试

缺点

就是运行有点慢啊…
好像没看到直接截图对比功能,不过可以考虑使用现成的monkeyRunner的,没测试过…

安装:

网上文章应该蛮多的,据说安装比较复杂,我因为之前开发的时候安装过androidSDK,python,node,framework4.5等等,所以一路都还挺顺利,安装过程:
1. 在系统环境变量中配置 ANDROID_HOME 变量
2. 安装python并添加到path环境变量中
3. 安装node(非必需)
4. 下载appium 并安装,推荐1.4.0以后的版本
5. 安装appium客户端:

pip install robotframework-appiumlibrary
  1. 在开始菜单中点击运行appium服务器

脚本编写

  1. 设置默认编码
# -*- codeing: utf-8 -*-
# 这个最好还是养成习惯
### 使用Appium进行移动应用自动化测试 #### 安装与配置环境 为了能够顺利使用Appium进行移动应用的UI自动化测试,首先需要搭建好相应的开发环境。这包括但不限于掌握一定的编程语言基础、熟悉特定的操作系统以及理解所使用测试框架[^3]。 #### 初始化项目并设置Desired Capabilities 在准备就绪之后,初始化一个新的测试项目,在此过程中定义`desired capabilities`是非常重要的一步。这些参数告诉Appium关于被测设备的信息(如操作系统版本、设备名称等),还有待测的应用包名或APK文件路径等内容。对于Android而言,可能还需要指定诸如`automationName`为`UiAutomator2`这样的选项来提高稳定性[^1]。 ```java // Java示例代码:创建Session时传递 DesiredCapabilities 参数给 Appium Server import io.appium.java_client.MobileElement; import io.appium.java_client.android.AndroidDriver; public class Test { public static void main(String[] args){ File appDir = new File("src"); File app = new File(appDir, "ApiDemos-debug.apk"); DesiredCapabilities caps = new DesiredCapabilities(); caps.setCapability("platformName", "Android"); caps.setCapability("deviceName", "emulator-5554"); // 设备ID可以通过 adb devices 查看 caps.setCapability("app", app.getAbsolutePath()); AndroidDriver<MobileElement> driver = new AndroidDriver<>(new URL("http://localhost:4723/wd/hub"), caps); try{ Thread.sleep(5000); // 等待启动完成 } catch (InterruptedException e){} } } ``` #### 编写测试脚本 一旦成功连接到目标设备并且加载了应用程序,就可以编写具体的测试逻辑了。通过调用各种API方法模拟用户的交互行为,比如点击按钮、输入文本框内容或是滑动屏幕等等。下面给出了一段简单的例子展示如何操作界面上的一个元素: ```python from appium import webdriver def test_element_interaction(): desired_caps = {} desired_caps['platformName'] = 'Android' desired_caps['deviceName'] = 'emulator-5554' # 替换成实际设备的名字 desired_caps['appPackage'] = 'io.appium.android.apis' desired_caps['appActivity'] = '.view.TextFields' driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) element = driver.find_element_by_accessibility_id("Text") # 寻找可访问性id为"Text"的对象 element.click() # 执行点击动作 text_field = driver.find_element_by_class_name("android.widget.EditText") text_field.send_keys("Hello World!") # 向编辑框发送字符串"Hellow World!" driver.quit() ``` #### 结果验证与报告生成 最后但同样重要的是,执行完毕后的结果校验工作必不可少。通常情况下会结合断言机制确保预期的行为确实发生;同时也可以利用第三方库帮助收集日志信息以便后续分析问题所在之处。此外,还可以考虑集成持续集成(CI)/持续部署(CD)流水线实现更高效的迭代流程管理[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值