Appium我跳过的那些坑

本文介绍了解决Appium与Selenium在自动化测试中遇到的问题的方法,包括send_keys报错的处理方式、如何输入中文字符,以及避免每次运行测试前都需要安装Unlock、Setting、AppiumAndroidInputManagerforUnicode等组件。

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

原文地址

 

1 send_keys报错

当appium与selenium版本匹配不匹配时,send_keys可能会报错,那么就用set_value 代替send_keys,或者selenium降到3.0.1版本

2     无法输入中文

需要输入中文时,在desired_caps配置'unicodeKeyboard','resetKeyboard'为True

3 解决每次运行时都要安装 Unlock、Setting、Appium Android Input Manager for Unicode

 

3.1  修改android-helpers.js,注释以下3行

C:\Users\dongcheng\AppData\Local\appium-desktop\app-1.5.0\resources\app\node_modules\appium\node_modules\appium-android-driver\lib

 

//await helpers.pushSettingsApp(adb);
//await helpers.pushUnlock(adb);
//await adb.install(unicodeIMEPath, false);

 

3.2 修改另外一个android-helpers.js,将它注释掉,并且在该行下方加上一行

C:\Users\dongcheng\AppData\Local\appium-desktop\app-1.5.0\resources\app\node_modules\appium\node_modules\appium-android-driver\build\lib

//return _regeneratorRuntime.awrap(adb.install(_appiumAndroidIme.path, false));
return context$1$0.abrupt('return',defaultIME);

//return _regeneratorRuntime.awrap(helpers.pushSettingsApp(adb));
return context$1$0.abrupt('return',defaultIME);

//return _regeneratorRuntime.awrap(helpers.pushUnlock(adb));

return context$1$0.abrupt('return',defaultIME);

 

 

 

 

### Appium 跳过系统相册授权解决方案 在使用 Appium 进行移动端自动化测试时,遇到权限弹窗(如系统相册授权)是一个常见的场景。为了实现跳过这些权限提示的功能,可以通过以下几种方式进行处理: #### 方法一:利用 `autoGrantPermissions` 功能 Appium 提供了一个内置功能参数 `autoGrantPermissions`,可以在启动会话时自动授予应用程序所需的权限[^2]。此选项会在安装 APK 的时候自动授予权限,从而避免手动点击授权的操作。 ```java DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("platformName", "Android"); capabilities.setCapability("deviceName", "emulator-5554"); capabilities.setCapability("appPackage", "com.example.app"); capabilities.setCapability("appActivity", ".MainActivity"); // 自动授予权限的关键配置 capabilities.setCapability("autoGrantPermissions", true); driver = new AndroidDriver<>(new URL("http://localhost:4723/wd/hub"), capabilities); ``` 这种方法适用于大多数标准权限请求,但对于某些自定义行为可能无法完全覆盖。 --- #### 方法二:模拟用户交互操作 如果 `autoGrantPermissions` 未能解决特定的权限问题,则可以采用直接定位并操作权限对话框的方式。这通常涉及识别权限弹窗中的按钮并通过 Appium API 来完成点击动作。 以下是基于 Python 的代码示例: ```python from appium import webdriver desired_caps = { 'platformName': 'Android', 'deviceName': 'emulator-5554', 'appPackage': 'com.example.app', 'appActivity': '.MainActivity' } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) try: # 定位允许按钮 (假设 ID 或者其他属性已知) allow_button = driver.find_element_by_id("com.android.packageinstaller:id/permission_allow_button") if allow_button.is_displayed(): allow_button.click() # 点击允许按钮 except Exception as e: pass # 如果未找到该元素则忽略错误继续运行脚本 ``` 这种方式依赖于具体的 UI 控件结构,因此需要提前确认目标设备上的控件名称或者 XPath 表达式。 --- #### 方法三:修改应用源码或打包流程 对于更深层次的需求,比如彻底移除某个特定权限检查逻辑,可以直接调整原始的应用程序代码来禁用不必要的权限验证过程后再重新编译生成新的 APK 文件用于测试阶段[^3]。不过需要注意的是这种做法仅适合内部调试用途而不应发布至生产环境中去影响最终用户体验。 具体步骤如下所示: 1. 获取最新版源代码仓库副本; 2. 修改相关业务模块去掉关于访问媒体库部分限制条件判断语句; 3. 使用 Maven 构建工具按照既定规则完成定制化版本创建任务; 4. 将新产出出来的 .apk 文档加载到待测机型之上实施进一步检验活动。 上述三种途径各有优劣之处,在实际工作中可根据具体情况灵活选用最合适的策略加以应对。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值