使用appium进行app自动化测试时遇到AppActivity设置正确但报Connect Appium Server Fail.A new session could not be created

解决Appium启动失败
本文介绍了一种在Appium自动化测试中解决启动失败的方法。当AppActivity设置正确但仍出现启动失败时,可以通过增加AppWaitActivity参数来解决问题。

appium 部分服务关键字如下:

PlatformName=Android
PlatformVersion=4.4.4
AppPackage=com.xxxxx.xxxx
AppActivity=.ui.startup.launcher.LaucherActivity


使用appium进行app自动化测试时遇到AppActivity设置正确但报Connect Appium Server Fail.A new session could not be created. (Original error: com.xxxxx.xxxx/.ui.startup.launcher.LaucherActivity never started. Current: com.xxxxx.xxxx/.ui.upgrade.UpdateCheckActivity) (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 36.28 seconds


通过咨询研发发现,说app并没有设置主Activity,但是通过工具查到显示的主activity确实为com.xxxxx.xxxx.ui.startup.launcher.LaucherActivity 但是按照正确的配置就是无法启动appium的连接,通过百度和查询资料发现,针对这种没有设置主activity或者有设置主activity的app在创建appium的实例连接报错时需要增加另一个服务关键字的使用即:

PlatformName=Android
PlatformVersion=4.4.4
AppPackage=com.xxxxx.xxxx
AppActivity=.ui.startup.launcher.LaucherActivity
AppWaitActivity=.ui.startup.role.RoleActivity


在创建appium实例的使用增加appWaitActivity的使用即可

使用Appium进行自动化测试,如果遇到 `selenium.common.exceptions.SessionNotCreatedException: Message: A new session could not be created. Details: java.lang.IllegalStateException: UiAutomation not connected!` 异常,通常表示Appium无法成功连接到Android设备上的 `UiAutomation` 服务。这可能是由多种原因引起的,以下是一些常见的解决方案和排查方向: ### 1. 检查设备连接状态 确保设备(真机或模拟器)处于正常连接状态,并且可以通过 `adb devices` 命令正确识别设备。若设备未被识别,需排查USB调试模式、ADB驱动或模拟器启动状态等问题[^1]。 ### 2. 重启ADB服务 有ADB服务可能出现异常,尝试通过以下命令重启ADB服务: ```bash adb kill-server adb start-server ``` 重启后重新连接设备并再次运行测试脚本。 ### 3. 检查Appium Server日志 查看Appium Server的详细日志,定位是否在初始化 `UiAutomator2` 驱动出现错误。常见的问题包括设备未授权、应用安装失败或设备响应超等。确保设备弹出的“允许USB调试”提示已确认授权。 ### 4. 更新Appium和相关依赖 确保使用Appium版本以及 `appium-uiautomator2-driver` 等插件为最新版本。旧版本可能存在兼容性问题,更新命令如下: ```bash npm install -g appium npm install -g appium-uiautomator2-driver ``` 更新后重启Appium服务并重新运行测试[^1]。 ### 5. 配置正确的Desired Capabilities 确保Desired Capabilities中配置了正确的设备信息和自动化引擎。例如,使用 `UiAutomator2` 作为自动化引擎,配置如下: ```python desired_caps = { 'platformName': 'Android', 'deviceName': 'emulator-5554', 'platformVersion': '11.0', 'appPackage': 'com.example.app', 'appActivity': '.MainActivity', 'automationName': 'UiAutomator2' } ``` 确保 `automationName` 设置为 `UiAutomator2`,否则可能导致无法连接 `UiAutomation` 服务。 ### 6. 检查设备系统状态 在某些情况下,设备系统可能未正确加载 `UiAutomation` 服务。尝试手动启动设备上的“开发者选项”和“USB调试”模式,或者重启设备后再运行测试脚本[^1]。 ### 7. 使用Logcat排查详细错误 通过 `adb logcat` 命令查看设备日志,定位是否在启动 `UiAutomation` 服务出现异常。例如: ```bash adb logcat -s UiAutomation ``` 在日志中查找 `UiAutomation` 初始化失败的具体原因,如权限问题或服务未启动等[^1]。 ### 8. 确保设备未被其他进程占用 检查设备是否被其他ADB进程或测试框架占用。例如,关闭其他IDE(如Android Studio)或终止占用ADB端口的进程,确保设备资源可被Appium正常访问。 ### 9. 使用Appium Desktop进行调试 使用Appium Desktop工具手动启动Session,查看是否能够成功连接设备并执行基本操作。该工具提供了更直观的调试界面,有助于快速定位问题[^1]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值