Appium_python code(2)

来源:互联网 发布:lol凛冬之怒数据 编辑:程序博客网 时间:2024/05/21 06:39
# coding:utf8import loggingimport histsimilarimport tracebackimport timeimport osfrom selenium import webdriverfrom selenium.common.exceptions import NoSuchElementException, WebDriverExceptionlogging.basicConfig(filename='log.txt',level=logging.INFO)success = Truedesired_caps = dict()desired_caps['browserName'] = 'iOS'desired_caps['platform'] = 'Mac'desired_caps['version'] = '6.1'desired_caps['app'] = os.path.abspath('测试app的位置')#def is_alert_present(wd):#    try:#        wd.switch_to_alert().text#        return True#    except:#        return Falsedef click(element):    element.click()    time.sleep(3)    logging.info(str(c) + ' time click ' + wd.page_source)    screenshot()def send_keys(element, keys):    element.send_keys(keys)    time.sleep(3)    logging.info(str(c) + ' time click ' + wd.page_source)    screenshot()def execute_script(script, args):    wd.execute_script(script, args)    time.sleep(3)    screenshot()def mk_new_dir():    global path, base    base = '截图存放的位置'    if not os.path.isdir(base):        path = base + '0/'        os.mkdir(path)        return    path = base + str(len(os.listdir(base))) + '/'c = 0def screenshot():    global c, path    if not os.path.isdir(path):        os.mkdir(path)    wd.get_screenshot_as_file(path + str(c) + '.png')    c += 1def compare():    dirs = list()    for dirname in os.listdir(base):        if os.path.isdir(base + dirname):            dirs.append((os.path.getmtime(base + dirname), dirname))    if len(dirs) < 3:        return    dirs.sort()    new = dirs[len(dirs) - 1][1]    previous = dirs[len(dirs) - 2][1]    names = [(os.path.getmtime(base + new + '/' + filename), filename) for filename in             os.listdir(base + new)]    names.sort()    for n in names:        if n[1].startswith('.'):            continue        if os.path.exists(base + previous + '/' + n[1]):            print n[1] + ' similarity : ' + str(                int(histsimilar.calc_similar_by_path(base + new + '/' + n[1],                                                     base + previous + '/' + n[1]) * 100)) + '%'try:    mk_new_dir()    wd = webdriver.Remote('http://0.0.0.0:4723/wd/hub', desired_caps)    wd.implicitly_wait(5)    try:        button = wd.find_element_by_name('点击开启')        while not button.is_displayed():            #screenshot()            time.sleep(1)        time.sleep(3)        click(button)    except WebDriverException, NoSuchElementException:        logging.info('没有开机动画')    click(wd.find_element_by_xpath("//window[1]/tableview[1]/cell[1]/button[1]"))    click(wd.find_element_by_name(" 返回"))    click(wd.find_element_by_xpath("//window[1]/tableview[1]/cell[1]/button[2]"))    click(wd.find_element_by_name(" 返回"))    click(wd.find_element_by_name("游记"))    click(wd.find_element_by_name("qunar login"))    send_keys(wd.find_element_by_xpath("//window[1]/image[2]/textfield[1]"), "lvtu@yopmail.com")    send_keys(wd.find_element_by_xpath("//window[1]/image[3]/secure[1]"), "lvtu@yopmail.com")    click(wd.find_element_by_name("登录"))    try:        click(wd.find_element_by_xpath("//window[1]/button[3]"))    except:        logging.info('没上传提示')    click(wd.find_element_by_xpath("//window[1]/tableview[1]/cell[1]/text[1]"))    click(wd.find_element_by_xpath("//window[1]/tableview[1]/cell[1]"))    execute_script("mobile: swipe",                   {"touchCount": 1, "startX": 157, "startY": 529, "endX": 156, "endY": 102, "duration": 0.5})    click(wd.find_element_by_name(" 返回"))    click(wd.find_element_by_name(" 返回"))    click(wd.find_element_by_xpath("//window[1]/button[1]"))except:    traceback.print_exc()    success = Falsefinally:    if success:        #raise Exception("Test failed.")        compare()        wd.quit()
计算图片相似度部分
# -*- coding: utf-8 -*-import Imagedef make_regalur_image(img, size=(256, 256)):    return img.resize(size).convert('RGB')def split_image(img, part_size=(64, 64)):    w, h = img.size    pw, ph = part_size    assert w % pw == h % ph == 0    return [img.crop((i, j, i + pw, j + ph)).copy() \            for i in xrange(0, w, pw) \            for j in xrange(0, h, ph)]def hist_similar(lh, rh):    assert len(lh) == len(rh)    return sum(1 - (0 if l == r else float(abs(l - r)) / max(l, r)) for l, r in zip(lh, rh)) / len(lh)def calc_similar(li, ri):#   return hist_similar(li.histogram(), ri.histogram())    return sum(hist_similar(l.histogram(), r.histogram()) for l, r in zip(split_image(li), split_image(ri))) / 16.0def calc_similar_by_path(lf, rf):    li, ri = make_regalur_image(Image.open(lf)), make_regalur_image(Image.open(rf))    return calc_similar(li, ri)def make_doc_data(lf, rf):    li, ri = make_regalur_image(Image.open(lf)), make_regalur_image(Image.open(rf))    li.save(lf + '_regalur.png')    ri.save(rf + '_regalur.png')    fd = open('stat.csv', 'w')    fd.write('\n'.join(l + ',' + r for l, r in zip(map(str, li.histogram()), map(str, ri.histogram()))))    #   print >>fd, '\n'    #   fd.write(','.join(map(str, ri.histogram())))    fd.close()    import ImageDraw    li = li.convert('RGB')    draw = ImageDraw.Draw(li)    for i in xrange(0, 256, 64):        draw.line((0, i, 256, i), fill='#ff0000')        draw.line((i, 0, i, 256), fill='#ff0000')    li.save(lf + '_lines.png')

0 0
原创粉丝点击