NO.3 appium-退出/启动

本文详细介绍了Appium中APP退出与启动的相关API,包括quit、close_app、launch_app及background_app的具体用法和区别,并通过实例展示了不同API对APP状态的影响。

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

这应该是迈开腿的第三章内容,大致收集了一下关于app退出和启动的API,在开始之前,我们先确认一下一般情况下我们退出app的几种情况是啥样子。

我用来举例子的app,会记住上次登录成功的账号,每次打开app账号栏里都默认是‘tt’,像这样:

第一种情况:点击两次‘返回键’退出app

我先将帐户名改成‘123’:

 

 

点击两次‘返回键’,再次启动app:

 

 

用返回键退出,重新打开后,还是默认的‘tt’。

 

第二种情况:点击‘HOME’键,至于后台

 

我先将帐户名改成‘123’:

 

 

 

 

 

点击‘HOME’键至于后台,在启动app:

用‘HOME’键至于后台,帐户名还是‘123’

 

前话唠完,好嘞~菜来喽!!!

 

 

1.quit(self)

Quits the driver and closes every associated window.

:Usage:
    driver.quit()

API的大概意思:退出驱动程序并关闭相关窗口

我们来试一下账号更改为‘123’,然后使用quit()是啥效果。

 

执行代码

 

driver.find_element_by_id("账号框").set_text('123')
driver.quit()
执行结果:app确实被退出,返回到了手机桌面,我们启动一下看看

退出后,重新打开app显示的账号是‘123’,难道quit类似‘HOME’?

 

 

2.close_app(self)

Stop the running application, specified in the desired capabilities, on the device.

API的大概意思是:停止运行的应用程序,这个就不可爱了,都不给个例子。

 


执行代码

driver.find_element_by_id("账号框").set_text('123')
driver.close_app()
执行结果:app又确实退出了,回到了手机桌面,我们启动一下app看看结果。

账号是默认的‘tt’,看来'close_app()'退出的比较彻底。

3.launch_app(self)

Start on the device the application specified in the desired capabilities.

API的大概意思:启动app

乍一看挺合理,有关闭有启动,测试的时候偶尔也需要这样的操纵,我们挨个试试。

 

首先是quit(),然后启动

执行代码

driver.find_element_by_id("账号框").set_text('123')
driver.quit()
driver.launch_app()
执行结果:selenium.common.exceptions.WebDriverException: Message: 

一脸懵逼了,报错了,还没给具体的错误信息,这是什么鬼?先放放,试试别的。


接下来是close_app(),然后启动

执行代码

driver.find_element_by_id("账号框").set_text('123')
driver.close_app()
driver.launch_app()
执行结果:一切事正常,再次启动了app

类似点击两次‘返回键’,然后重新打开。

 

额~再次看了一下API想来大概是这样的,‘quit()退出驱动并关闭页面’,执行quit()的时候appium驱动被退出,关闭的是appium,而app显示的页面被关闭(这个关闭是不在前台显示而已,没有真的关闭,重新启动app的时候可以看见,账号框输入的123还在),这相当于本次driver的生命周期结束。

‘close_app()是关闭应用’,只是一个普通的操作,app被关闭之后appium还在干活,所以我们可以用launch_app()再次唤起,此时driver得生命周期并没结束,我们唤起app后仍然可以继续执行其它操作。

quit()真正关闭的是appium。

close_app()关闭的只是app而已。

 

4.background_app(self, seconds)

Puts the application in the background on the device for a certain duration.

:Args:
 - seconds - the duration for the application to remain in the background

这个API的大概意思:将app至于后台XX秒

有了它,就可以不用先close_app(),再launch_app()去唤起app了,一个API就搞定。

 


执行代码

 

driver.find_element_by_id("账号框").set_text('123')
driver.background_app(3)
执行结果:跟close_app()/launch _app(),一样的效果。

3秒后启动,默认的账号还是‘tt’,可见这个置于后台并不是类似‘HOME’的操作,而是类似关闭app再启动

 

菜齐了!

 

转载于:https://www.cnblogs.com/dianxiao2/p/5531890.html

<think>首先,用户的问题是关于无法启动企业微信应用程序(com.tencent.wework)在Android上,使用Appium进行自动化测试配置。用户提到了"Appium自动化测试配置",所以我需要基于Appium来解决这个问题。 从系统级指令,我需要: - 所有行内数学表达式用$...$,但在这个上下文中,可能没有数学表达式,所以我可以忽略。 - 独立公式用$$...$$,但同样,可能不需要。 - LaTeX语法正确:确保任何公式正确。 - 使用中文回答:整个回答用中文。 - 生成相关问题:在回答结束后,生成相关问题。 - 引用段落末尾添加引用标识:如[^1],但用户提供了引用,我需要参考它们。 用户提供的引用: - 引用[1]: Appium启动参数设置,具体针对企业微信的配置。 - 引用[2]: APP自动化之PO,描述了测试框架的结构。 - 引用[3]: 一个测试用例示例,使用Appium测试添加联系人。 用户的问题是:"无法启动 com.tencent.wework 应用程序 Android 解决方案 Appium 自动化测试配置"。所以,核心是解决启动失败的问题。 可能的启动失败原因: 1. Appium配置错误:例如,启动参数不正确。 2. 设备连接问题:设备未连接或ADB问题。 3. 应用未安装或版本不匹配。 4. Appium版本或依赖问题。 5. 权限问题。 基于引用[1],启动参数是: { "platformName": "Android", "platformVersion": "9.0", "appPackage": "com.tencent.wework", "appActivity": ".launch.WwMainActivity", "deviceName": "192.168.56.101:5555", "noReset": "true", "dontStopAppOnReset": "true" } 我需要检查这些参数是否正确。 常见解决方案: - 确保设备连接:使用`adb devices`检查设备是否列出。 - 验证appPackage和appActivity:使用`adb shell dumpsys window | findstr mCurrentFocus`获取当前活动。 - 更新Appium和驱动程序。 - 检查日志以获取错误信息。 回答结构: 1. 理解问题:确认用户遇到启动失败。 2. 分析可能原因。 3. 提供解决方案步骤。 4. 建议检查引用中的配置。 5. 生成相关问题。 由于用户提供了引用,我应该整合它们: - 引用[1]直接相关,是启动参数。 - 引用[2]和[3]是关于测试框架和用例,可能间接相关,但用户问题主要是启动失败,所以重点在配置。 最终回答: - 用中文。 - 结构清晰:介绍问题、原因、解决步骤。 - 结束时生成相关问题。 生成相关问题: - 基于主题:Appium配置、错误处理、企业微信特定问题等。 例如: 1. 如何获取企业微信的正确appActivity? 2. Appium启动失败常见错误有哪些? 3. 如何调试Appium会话启动问题? 确保回答真实可靠:基于Appium文档和常见实践。</think>### 解决 Appium 无法启动企业微信(com.tencent.wework)的 Android 自动化测试问题 当您在 Appium 自动化测试中遇到无法启动企业微信(`com.tencent.wework`)应用程序的问题时,这通常是由于配置错误、设备连接问题或应用环境不一致导致的。以下我将逐步分析原因并提供解决方案,帮助您快速修复问题。解决过程基于 Appium 的 Android 驱动机制和常见实践,同时参考您提供的引用内容。 #### 问题分析与常见原因 1. **启动参数配置错误**:Appium 的 Desired Capabilities(启动参数)必须精确匹配设备信息和应用详情。例如,`appPackage` 或 `appActivity` 值错误会导致 Appium 无法识别应用入口点[^1]。 2 **设备连接问题**:设备未通过 ADB 正确连接,或 `deviceName` 参数(如 `192.168.56.101:5555`)与实际设备 IP 或序列号不匹配。 3 **应用环境问题**:企业微信未安装、版本不兼容,或 Android 系统权限(如 USB 调试未开启)阻止了启动。 4 **Appium 或依赖项问题**:Appium 服务器版本过旧、WebDriverAgent 未正确初始化,或缺少必要的 SDK 工具。 5 **日志信息缺失**:未查看 Appium 日志,导致无法定位具体错误。 #### 解决方案步骤 按照以下步骤逐一排查和修复问题。每个步骤都基于实际测试经验,确保可靠性。 1. **验证设备连接和 ADB 状态** - 确保设备已通过 USB 或网络连接,并在开发者选项中启用 "USB 调试"。 - 打开命令行,运行 `adb devices` 检查设备是否列出。如果设备未显示,尝试重启 ADB 服务: ```bash adb kill-server adb start-server adb devices ``` - 确认 `deviceName` 参数与 `adb devices` 列出的设备 ID 一致。例如,如果设备显示为 `emulator-5554`,则更新启动参数中的 `deviceName`[^1]。 2. **检查并修正 Appium 启动参数** 参考您提供的引用[1],企业微信的标准启动参数为: ```json { "platformName": "Android", "platformVersion": "9.0", // 必须与设备 Android 版本一致 "appPackage": "com.tencent.wework", "appActivity": ".launch.WwMainActivity", "deviceName": "192.168.56.101:5555", // 替换为您的设备 ID "noReset": "true", // 防止每次重置应用 "dontStopAppOnReset": "true" // 避免停止应用 } ``` - **关键修正点**: - **验证 `appActivity`**:企业微信的入口 Activity 可能因版本更新而变化。使用 ADB 获取当前值: ```bash adb shell dumpsys window | findstr mCurrentFocus ``` 如果输出类似 `com.tencent.wework/.launch.LaunchSplashActivity`,则更新 `appActivity` 为 `.launch.LaunchSplashActivity`。 - **更新 `platformVersion`**:确保与设备系统版本匹配(如 Android 10 需改为 `"10.0"`)。 - **添加必要参数**:如果应用未安装,添加 `"app": "/path/to/wework.apk"`;如果权限不足,添加 `"autoGrantPermissions": "true"`。 3. **确保应用环境就绪** - 安装企业微信最新版:从官方渠道下载 APK,并使用 `adb install wework.apk` 手动安装。 - 检查应用权限:在设备设置中,为企业微信启用所有必要权限(如存储、位置)。 - 清除应用缓存:运行 `adb shell pm clear com.tencent.wework` 避免旧数据干扰。 4. **调试 Appium 会话** - 启动 Appium 服务器时启用详细日志: ```bash appium --log-level debug ``` - 运行测试脚本,捕获日志中的错误关键字(如 `NoSuchActivity` 或 `Device not found`)。 - 常见错误处理: - 如果出现 `Original error: Could not find a connected Android device`,更新 ADB 或重启设备。 - 如果出现 `An unknown server-side error occurred`,升级 Appium 到最新版本(如 v2.0+)并安装最新驱动程序: ```bash npm install -g appium appium driver install uiautomator2 ``` 5. **参考测试框架集成(基于引用[2]和[3])** 如果您使用 Page Object 模式(如引用[2]所述),确保基础类正确封装了启动逻辑。参考引用[3]的用例结构: ```python from app.page.app import AppPage class TestContact: def setup(self): self.app = AppPage() self.main = self.app.start().goto_main() # 确保 start() 方法正确调用 Appium ``` - 在 `AppPage` 类中,验证启动参数是否动态加载(如从配置文件读取)。 - 添加异常处理,在失败时捕获日志和截图(如引用[2]中提到的 `PNG` 目录)。 #### 预防措施 - **定期更新**:保持 Appium、ADB 和企业微信 APK 为最新版本。 - **使用模拟器测试**:如果真机不稳定,改用 Android Studio 模拟器,并设置相同参数。 - **文档参考**:Appium 官方文档([appium.io](https://appium.io/))提供完整配置指南。 通过以上步骤,大多数启动失败问题都能解决。如果问题仍存在,请提供 Appium 日志片段,我会进一步协助分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值