Appium+Python移动端自动化测试常见问题总结【持续更新】

一、运行Appium,执行测试脚本,报错信息为:error: Failed to start an Appium session, err was: Error: Could not find adb. Please set the ANDROID_HOME environment variable with the Android SDK root directory path.

如图所示:

原因分析:

这种错误并不是ANDROID_HOME环境变量没有配置,也不是配置有问题(你要确定自己的ANDROID_HOME环境变量一定要配对)

解决办法:

以管理员身份运行Appium即可

二、出错信息里含有"ps 'uiautomator',具体信息为 A new session could not be created. (Original error: Command failed: C:\Windows\system32\cmd.exe /s /c "C:\Users\sxie\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell "ps 'uiautomator'"",如图所示:

这种情况,直接在cmd中执行"C:\Windows\system32\cmd.exe /s /c "C:\Users\sxie\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell "ps 'uiautomator'"", 报错为: bad pid 'uiautomator'

原因分析:

对应执行的指令是ps 'uiautomator', Android7不支持这个指令格式,所以执行结果是bad pid 'uiautomator';
目前Appium未对此进行处理,所以需要修改此指令的执行方式

解决办法(重点,重点,本人亲自尝试,保证解决问题):

1.打开adb.js(路径:X:\Program Files (x86)\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js)

2.找到第1035 行this.shell,也就是:

this.shell("ps '" + name + "'", function (err, stdout) {
if (err) return cb(err);

将此部分代码替换为:

this.shell_grep("ps", name, function (err, stdout) {

if (err) {

logger.debug("No matching processes found");
return cb(null, []);

}

3.替换完成后,在此代码的上边加入如下代码:

ADB.prototype.shell_grep = function (cmd, grep, cb) {
if (cmd.indexOf('"') === -1) {
cmd = '"' + cmd + '"';
}
var execCmd = 'shell ' + cmd + '| grep ' + grep;
this.exec(execCmd, cb);
};

4.修改后的adb.js如图所示(注意符号,空格之类容易报错的地,切记!切记!):


5.再次运行脚本,成功解决此问题,如图所示:

三、第二次运行python脚本时,appium报错如下:

报错详细信息为:

 Error: Command failed: C:\WINDOWS\system32\cmd.exe /s /c ""D:\Program Files\android-sdk-windows\platform-tools\adb.exe" -s HMKNW17414008402 install "D:\Program Files (x86)\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk""
> adb: failed to install D:\Program Files (x86)\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk: Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install io.appium.settings without first uninstalling.]

原因分析:

每次通过Appium运行python脚本时,当连接手机(真机)之后,使用appium在执行app自动化测试时,是会在手机上安装2个应用程序的,分别是:AppiumSettingsUnlock,也就是说在运行脚本的时候需要手动去删除这两个程序,我们先打开cmd看下手机都装了哪些程序,命令:adb shell pm list package,如图所示:

确定手机中确实安装了这两个程序之后,我们手动将其卸载即可

命令:adb uninstall io.appium.unlock     adb uninstall io.appium.settings

如图所示,提示success,则卸载成功:

再次运行脚本,完美解决此问题:

ps:如果这两个apk你不需要的话,也可以阻止其安装,设置方法如下:

1.找到appium的安装路径,X:\Program Files (x86)\Appium\node_modules\appium\lib\devices\android下的android.js并打开

2.找到113行和114行,将其注释掉,如图所示:

3.设置好重启appium,再次运行,完美解决每次都要安装、卸载这两个apk的问题 

四、启动appium输入法

 默认情况下,安卓手机是没有appium输入法的,需要在测试脚本中输入:

driver.activate_ime_engine('io.appium.android.ime/.UnicodeIME')

运行脚本后,手机中才会有appium输入法 

 

五、运行脚本报错信息如截图所示:

原因分析:build-tools安装包不兼容导致

解决办法:更新build-tools安装包(https://pan.baidu.com/s/1Hpestb0pLK96xRvnFpLaXw 
提取码:c8e4)

ps:这个问题是ahahhaha_aha博友分享的,运行脚本就报这个错,替换包之后问题解决,非常感谢ahahhaha_aha!欢迎大家私信交流遇到的问题及解决办法,帮助更多人解决问题,谢谢各位粉丝的支持!

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现移动端播放器的自动化测试需要使用到AppiumPython编程语言。以下是一些可能的测试场景: 1. 播放视频:在应用中选择一个视频并播放,检查视频是否正常播放,包括视频质量、声音质量等。 2. 暂停和继续播放:在视频播放过程中,暂停播放一段时间,然后继续播放,检查视频是否继续正常播放。 3. 调整音量:在视频播放过程中,调整音量大小,检查音量是否正常调整。 4. 全屏播放:在视频播放过程中,切换到全屏模式,检查视频是否正常全屏播放。 5. 切换视频分辨率:在视频播放过程中,切换不同的分辨率,检查视频是否正常播放。 6. 视频广告:在视频播放过程中,出现广告,检查广告是否正常播放。 7. 视频缓冲:在视频播放过程中,模拟网络延迟或低速网络,检查视频是否正常缓冲。 8. 视频播放列表:测试视频播放列表功能,检查是否可以正常播放多个视频。 通过使用Appium的API和Python编程语言,可以实现自动化测试脚本的编写和执行。可以使用Appium的UI Automator Viewer工具来查看应用程序的UI元素,并使用Appium的API来模拟用户操作。例如: ```python from appium import webdriver desired_caps = { 'platformName': 'Android', 'deviceName': 'device_name', 'appPackage': 'com.example.app', 'appActivity': 'MainActivity' } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 点击播放按钮 play_button = driver.find_element_by_id('com.example.app:id/play_button') play_button.click() # 等待视频播放 time.sleep(10) # 切换到全屏模式 fullscreen_button = driver.find_element_by_id('com.example.app:id/fullscreen_button') fullscreen_button.click() # 等待全屏模式 time.sleep(5) # 调整音量大小 volume_slider = driver.find_element_by_id('com.example.app:id/volume_slider') volume_slider.drag_to(0.5, 0, duration=1) # 暂停播放 pause_button = driver.find_element_by_id('com.example.app:id/pause_button') pause_button.click() # 等待暂停播放 time.sleep(2) # 继续播放 play_button.click() # 等待继续播放 time.sleep(2) driver.quit() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值