那就是签名没搞好呗
。。。。你没仔细全文吧。。app-inspector 的 wda 与 .macaca-ios 的 wda 不是同一路径的。。也就是说要配置 2 个 wda
ios 都没有 toast 的概念,Android 的 toast 是系统的东西。所以造成无法定位。。而 iOS 的 ‘toast’ 则是 app 层的,用 app-inspector 也是能定位到的。按照正常定位就行。。只要 ‘toast’ 消失时间不要太短
...上面有讲怎么解决啊。。
这么快就搞定,,。。厉害
是的。。之前我只是把划动写好,但划动查找元素以及判断都在 test case 里面写。。现在看到你的展示,我也考虑写在一起,以后会方便很多
那个参数是判断是否找到想要的元素。。元素的文本与 text 参数(就是预期该元素的文本),不过看起来我是多此一举了。macaca 还封装了_find_element_by_swipe 这,用 appium 还要自己写,我的思维习惯。。
这里还可以优化,
def _find_element_by_swipe(self, direction, using, value, text,element=None, steps=10, max_swipe=5):
times = max_swipe
for i in range(times):
try:
ele = self.driver.element(using, value)
if ele.text == text :
break
return ele
except WebDriverException:
if direction == 'up':
self.swipe_up(element=element, steps=steps)
elif direction == 'down':
self.swipe_down(element=element, steps=steps)
elif direction == 'left':
self.swipe_left(element=element, steps=steps)
elif direction == 'right':
self.swipe_right(element=element, steps=steps)
if i == times - 1:
raise WebDriverException
加了一个参数 text,加了一个判断,ele 的 text 与 参数 text 一致就可以提前 break 出 for 循环了,不过要是该 ele 没有 text 就难办了
好了
把 result 文件夹发送到别的 pc,也正常看到截图
已经改好了。。都是相对路径了
def a(self,cd):
day = strftime('%Y-%m-%d')
path = './result/' + day + '/screencap'
cd = cd.split(':') #拿到case id后进入分割
cd =cd[0]+'.png' #并组合好 截图名称
a = os.listdir(os.getcwd()+os.sep+path)
if cd in a:
b = a.index(cd) #然后判断的出 list a的索引
return 'screencap/'+a[b]
借了您的 HTMLTestRunner 模块,并在您上面的解说下,我也成功把断言失败的截图搞到 HTML 报告了,十分感谢您的开源.
因为我的整体结构不一样,截图是在报告的子目录下,如下图:
所以 截图搞到报告的实现有所不同,我在 HTMLTestRunner 模块 添加了一个方法:
row = tmpl % dict(
tid = tid,
Class = (n == 0 and 'hiddenRow' or 'none'),
style = n == 2 and 'errorCase' or (n == 1 and 'failCase' or 'none'),
desc = desc,
script = script,
#image = image[image.find("IMAGE:")+6:(int(image.find("PNG"))+3)],
image = self.a(desc),
caseid = caseid[caseid.find("case"):(int(caseid.find("case"))+9)],
status = self.STATUS[n],
)
rows.append(row)
if not has_output:
return
def a(self,cd):
day = strftime('%Y-%m-%d')
path = '/Users/zhaozhiquan/automation/iOSSdk/result/' + day + '/screencap'
cd = cd.split(':') #获取到case id后进入分割
cd =cd[0]+'.png' #并组合好 截图名称
a = os.listdir(path)
if cd in a:
b = a.index(cd) #然后判断的出 list a的索引
return path+'/'+a[b]
方法解析:image = self.a(desc),调用 def a(self,cd),获取到了 case id,并以 ‘ :’ 进行分割(test_101: 查看用户协议),并组合成截图的名称,然后通过 os 模块的 listdir(),去获取 screencap 文件夹下的所以文件名称,返回一个 list,然后通过 组合完成截图名称的 CD,去判断,cd 是否 in list a, 如果在,则获取到 截图 的索引 b,return 一个完整的 截图 path.
下图是报告:
再次感谢。
谢谢
楼主,请问
这个变量如何写的。。
请问 HTMLTestRunner 生成的报告的截图路径如何写入的
谢谢。尝试了
cmd0 ='echo xxxx | sudo chmod -R 777 /var/db/lockdown/'
可以跳过输入密码,
要。。在命令行输入后,就执行截图了
如果不需要项目源码就好了。。
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os
import shutil
import sys
import time
path = os.path.dirname(sys.argv[0])
os.chdir(path)
cmd0 ='sudo chmod -R 777 /var/db/lockdown/'
os.popen(cmd0)
a = time.strftime('%Y-%m-%d-%H_%M_%S')
b ='.png'
cmd1 ='idevicescreenshot '+a+b
os.popen(cmd1)
这个是我用 idevicescreenshot 截图的 command, 需要 sudo chmod 给权限,不然会运行报错,报错就无法用了,因为我是双击运行的
#2 楼 @softblank OSX:10.11.6 iOS:9.3 Xcode : 8.2.1
这里有不适配
adb install 有的版本会出现进度条,要是 key = re.findall(reg, l)[0] 的话,print 的是 0%
应该要改为 key = re.findall(reg, l)[-1]