如何在Appium中使用pushFile()传输文件后重命名文件?
解决Appium pushFile后文件重命名问题
方法1:执行adb shell重命名命令
在完成pushFile操作后,通过Appium调用设备shell的mv命令直接重命名文件:
Java示例
driver.executeScript("mobile: shell", ImmutableMap.of( "command", "mv", "args", new String[]{"/sdcard/Appium.tmp", "/sdcard/my_malicious_app.apk"} ));
Python示例
driver.execute_script('mobile: shell', { 'command': 'mv', 'args': ['/sdcard/Appium.tmp', '/sdcard/my_malicious_app.apk'] })
该操作通过Android系统原生的移动命令完成重命名,前提是你对/sdcard目录拥有写入权限。
方法2:直接指定push目标路径(跳过临时文件)
更高效的方式是在pushFile时直接指定完整的目标文件路径,避免生成Appium.tmp临时文件:
Java示例
byte[] apkBytes = Files.readAllBytes(Paths.get("本地路径/my_malicious_app.apk")); driver.pushFile("/sdcard/my_malicious_app.apk", apkBytes);
Python示例
with open("本地路径/my_malicious_app.apk", "rb") as apk_file: apk_data = apk_file.read() driver.push_file("/sdcard/my_malicious_app.apk", apk_data)
注意事项
- 确认设备
/sdcard目录具备读写权限;Android 10及以上设备受Scoped Storage限制,若遇到权限问题,可将文件推送到应用私有存储目录(如/data/data/[你的应用包名]/files/)。
内容的提问来源于stack exchange,提问作者user3780373
相关产品推荐
相关产品推荐

