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

运行Appium RobotFramework时触发TypeError异常求助

解决Appium RobotFramework中的Unicode类型异常问题

我之前踩过这个坑!在运行Appium+RobotFramework测试时碰到过一模一样的错误,给你分享下排查和解决的方法:

问题回顾

你遇到的错误信息:

FAIL : TypeError: exceptions must be old-style classes or derived from BaseException, not unicode

测试代码如下:

*** Settings ***
Library           AppiumLibrary
Test Cases
AB
    Open Application    http://localhost:4723/wd/hub    platformName=Android    platformVersion=8.0.0    deviceName=emulator-5554    appPackage=com.grabqpons.android    appActivity=com.grabqpons.android.MainActivity
    Sleep    2s
    Click Button    xpath=//*[startswith(@id,'slide-skip-btn')]
    Sleep    2s

从执行日志看,错误是在执行Click Button步骤后触发的,还生成了操作截图,说明元素定位应该是没问题的,问题出在库的内部逻辑上。

根本原因

这个错误90%以上是AppiumLibrary版本与Python版本不兼容导致的:

  • 如果你用的是Python 2.x,新版本的AppiumLibrary已经不再适配Python 2的字符串(unicode)处理逻辑,抛出异常时就会触发这个类型错误。
  • 少数情况是Appium服务器和客户端库版本不匹配,导致通信时的字符串解析出问题。

解决方案

我当时是这么解决的,你可以按顺序尝试:

1. 降级AppiumLibrary到Python 2兼容版本(适合不想换Python版本的情况)

直接卸载现有版本,安装最后一个支持Python 2的稳定版:

pip uninstall -y robotframework-appiumlibrary
pip install robotframework-appiumlibrary==1.4.0

这个版本我亲测能完美解决Python 2下的这个unicode异常问题。

2. 升级到Python 3(推荐长期方案)

如果你的项目允许,直接把Python环境升级到3.6及以上版本,然后安装最新版的AppiumLibrary:

pip install --upgrade robotframework-appiumlibrary

Python 3对字符串的处理更统一,从根源上避免了这类unicode相关的异常,后续也能使用库的新功能。

3. 同步Appium服务器版本

如果上面两步都没用,检查下Appium服务器的版本,确保和客户端库版本匹配。比如升级到最新稳定版:

npm install -g appium@latest

验证方法

改完后重新运行你的测试用例,Click Button步骤应该能正常执行,不会再抛出那个类型错误了。如果还是有问题,可以再检查下xpath定位是否准确,但从截图生成的情况来看,定位应该是没问题的,优先解决版本兼容问题就好。

内容的提问来源于stack exchange,提问作者Madhu Nds

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:38:44