Appium [已解决] Appium 截图后无法保存到指定路径,求助!

五棵木 · 2016年11月16日 · 最后由 恒温 回复于 2016年11月17日 · 2551 次阅读

到模拟器中删除/data/local/tmp 该路劲下的 screenshot.png,或者赋予这个文件及所在目录所有权限,再执行脚本,截图也还是没保存到指定路径。
代码:

from time import sleep
from appium import webdriver

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4.4'
desired_caps['deviceName'] = '127.0.0.1:6555'
desired_caps['appPackage'] = 'cn.mailchat'
desired_caps['appActivity'] = 'cn.mailchat.activity.setup.WelcomeActivity'
dr=webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
sleep(5)
dr.get_screenshot_as_file("E:\Appium\Mailchat\image\getscreen\p3.png")

截图部分的日志:

info: <-- GET /wd/hub/session/9881277c-b170-475f-b5f6-c5a7bce45781 200 1.509 ms - 637 {"status":0,"value":{"platform":"LINUX","browserName":"Android","platformVersion":"4.4.4","webStorageEnabled":false,"takesScreenshot":true,"javascriptEnabled":true,"databaseEnabled":false,"networkConnectionEnabled":true,"locationContextEnabled":false,"warnings":{},"desired":{"appActivity":"cn.mailchat.activity.setup.WelcomeActivity","platformName":"Android","appPackage":"cn.mailchat","deviceName":"127.0.0.1:6555","platformVersion":"4.4.4"},"appActivity":"cn.mailchat.activity.setup.WelcomeActivity","platformName":"Android","appPackage":"cn.mailchat","deviceName":"127.0.0.1:6555"},"sessionId":"9881277c-b170-475f-b5f6-c5a7bce45781"}
info: --> GET /wd/hub/session/9881277c-b170-475f-b5f6-c5a7bce45781/screenshot {}
info: [debug] executing cmd: D:\Monkey\SDK\sdk\platform-tools\adb.exe -s 127.0.0.1:6555 shell "/system/bin/rm /data/local/tmp/screenshot.png; /system/bin/screencap -p /data/local/tmp/screenshot.png "
info: [debug] executing cmd: D:\Monkey\SDK\sdk\platform-tools\adb.exe -s 127.0.0.1:6555 pull /data/local/tmp/screenshot.png "C:\Users\linchs\AppData\Local\Temp\appium1161016-7452-xmj3tc.png"

共收到 13 条回复 时间 点赞

截图存储的 api 是:self.driver.save_screenshot()

self.driver.save_screenshot(file_path)

感谢回复,试了 self.driver.save_screenshot() 这个方法也不行,没有保存到指定路径😫

#1 楼 @joko 感谢回复,试了 self.driver.save_screenshot() 这个方法也不行,没有保存到指定路径

#3 楼 @muwu711 你的路径写的有问题。

"E:\\Appium\\Mailchat\\image\\getscreen\\p3.png"

或者:

"E:/Appium/Mailchat/image/getscreen/p3.png"

#1 楼 @joko

self.get_screenshot_as_file()

这个方法和你提到的截图方法是一样的,主要问题在文件存储路径

#4 楼 @joko 我的路径格式没有碰到斜杠和字母组合变成转义的,所以这样写是没问题的,但这确实不是个好习惯,已经采用您的路径格式;另该问题确实也是出现在路径问题上,刚刚试着将路径改成和脚本是同级的目录,可以保存成功了,谢谢您的回复

E:\Appium\Mailchat\image\getscreen\p3.png"

#4 楼 @joko #5 楼 @CwXwWw 小菜比还有个问题,如果要保存到和脚本不同层级的路径,该如何实现呢?

#7 楼 @muwu711

dr.get_screenshot_as_file("E:\Appium\Mailchat\image\getscreen\p3.png")

你这边不是已经指定了路径吗?还是说想用相对路径来实现?

#8 楼 @CwXwWw 就用绝对路径,"E:\Appium\Mailchat\image\getscreen\p3.png"这个路径保存不成功,"E:\Appium\Mailchat\image\p3.png"这个路径和脚本是同一层级的,可以保存成功,现在不懂为什么第一个路径下保存不成功😨

#9 楼 @muwu711

我举个例子啊,从你目前的路径来看,我的理解是:你的运行脚本是和 image 文件夹在同一级目录下是吗?然后你想把截图存到 image 目录下的 getscreen 文件夹里?假如说我的理解是对的,那么我们现在就通过下面的方法来实现。
第一步:先要确保手动在 image 目录下把 getscreen 文件夹建好
第二步:指定截图存放路径,见如下代码
import os
import sys
# 定义path路径,根据当前运行脚本所在的路径去寻找到你需要存放截图的路径
# 调试的时候可以把path打印出来看看是不是指到正确的路径
path = os.path.abspath(os.path.dirname(sys.argv[0]))+'\\image\\getscreen'
第三步:用你文中的截图方法进行截图,见如下代码
dr.get_screenshot_as_file(path+'\\p3.png')
最后,截图文件就会保存到了你想要存储的 getscreen 文件夹里了。不知道我的理解对不对,如果有疑问我们可以再交流,谢谢。

#10 楼 @CwXwWw 您这个打印出来的变成 pycharm 的安装路径了。
[2016-11-17 14:38:48,629]:debug_test.py,INFO,E:\tools\pycharm\PyCharm Community Edition 5.0.5\helpers\pycharm\
用 FILE=os.getcwd() 这个可以获取到脚本所在路径 E:\A,但我想将截图放在 E:\B\C 下

#11 楼 @muwu711
抛开 os.path.abspath(os.path.dirname(sys.argv[0])),这个我不想多说什么了。再贡献一行代码,仅此一行:

path = os.path.abspath(os.path.join(('E:\A'),os.path.pardir))+'\\B\\C'

#12 楼 @CwXwWw 非常感谢您的热心帮忙,目前已经没有什么困扰了,有其他问题再向您请教😄

恒温 关闭了讨论 11月17日 20:52
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册