You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Appium测试Android应用无法保留设置问题排查咨询

问题分析与解决方案

嗨,我来帮你搞定这个问题~你遇到的核心问题是Appium默认会在每次新会话启动时重置应用状态,导致你之前测试中新增的文档被清除,每次都回到初始的1个文档状态。下面是具体的问题排查和解决步骤:

1. 问题根源:Appium的默认重置行为

Appium的默认配置里,noReset参数是False,这意味着每次启动新的测试会话时,Appium会自动清除应用的缓存和数据,把应用恢复到首次安装的状态。这就是为什么你每次启动测试,都只能看到默认的1个文档。

2. 解决方案:修改Desired Capabilities禁用重置

你需要在初始化WebDriver的Desired Capabilities中添加noReset: True,同时确保fullReset为False(默认就是False,但明确设置更稳妥),这样Appium就不会在启动会话时重置应用数据了。

修改后的初始化代码示例:

import os
import unittest
from appium import webdriver

class YourDocumentTest(unittest.TestCase):
    def setUp(self):
        desired_caps = {
            'platformName': 'Android',
            'deviceName': '你的设备名称或emulator-5554',
            'appPackage': '你的应用包名',  # 替换为实际的应用包名,比如com.example.docapp
            'appActivity': '你的启动Activity',  # 替换为实际的启动页面Activity
            'noReset': True,  # 关键:禁用应用重置,保留之前的用户数据
            'fullReset': False  # 确保不执行完全卸载重装的重置操作
        }
        self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    
    def test_add_documents(self):
        # 你的测试逻辑:向下滑动新增文档等操作
        pass
    
    def tearDown(self):
        self.driver.quit()

3. 额外优化建议

  • 如果你需要在第一个测试用例执行前重置应用到初始状态(比如确保测试环境干净),可以在测试类的setUpClass方法中单独执行一次带fullReset: True的会话,之后的测试都用noReset: True。
  • 如果你不想完全关闭应用(避免每次重新启动的开销),可以把tearDown里的self.driver.quit()换成self.driver.background_app(3),把应用放到后台,下次测试直接唤醒即可,状态会完全保留。

这样调整后,下次启动测试时,应用就会保留你之前新增的文档,不会再回到默认状态啦~

内容的提问来源于stack exchange,提问作者Jordan Helios

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:23:52