python代码测试健康指数计算器_【pywinauto自动化测试】python 测试计算器加法 例子...

本文展示了如何使用pywinauto库自动化测试Windows计算器的加法功能,涉及读取控件信息、点击按钮及结果验证,覆盖了10个数字的两两相乘情况。
摘要由CSDN通过智能技术生成

目的:开发一个python程序,利用pywinauto模块自动化测试计算器,测试内容为一位数的乘法运算

#!/usr/bin/python2.7

# -*- coding: gbk -*-

# function 自动化测试计算器

import os.path

import re

import win32con

import codecs

import sys

from pywinauto import Desktop

from pywinauto.application import Application

from pywinauto.keyboard import send_keys

import win32clipboard as wc

# 设置中文编码格式

if sys.getdefaultencoding() != 'gbk':

reload(sys)

sys.setdefaultencoding('gbk')

# 设置txt文件保存路径

txt_path = './TXT/'

if not os.path.exists(txt_path):

os.mkdir(txt_path)

# 设置控件信息的txt文件名

control_txt_name = txt_path + 'control.txt'

# 设置标题信息的txt文件路径

title_txt_file = txt_path + "title.txt"

# 设置检测记录信息的txt文件路径

record_txt_file = txt_path + "record.txt"

# 设置中文编码格式

if sys.getdefaultencoding() != 'gbk':

reload(sys)

sys.setdefaultencoding('gbk')

# 打开计算器应用

app = Application(backend="uia").start("calc.exe")

dlg_spec = Desktop(backend="uia").window(title=u"计算器", visible_only=False)

dlg_spec.restore()

# 打印控件信息到指定路径

dlg_spec.print_control_identifiers(filename=control_txt_name)

# 读取控件信息txt文件

fr = open(control_txt_name, "r")

# 设置正则表达式,用于提取button控件的title

par = r'.+title=\"([^,]+)\".+\"Button\"'

content = []

for line in fr.readlines():

res = re.compile(par).findall(line)

if res:

result = str(res[0]).split(',')

par_str = str(result[0])

content.append(par_str)

else:

pass

fr.close()

# 将提取到的信息另存为标题txt文件

fw = codecs.open(title_txt_file, "w", 'gbk')

for i in range(0, len(content)):

# 使用列表推导式把列表中的单个元素全部转化为str类型

new_content_line = [str(i) for i in content[i]]

# 把列表中的元素放在空串中,元素间用空格隔开

new_content_lines = ''.join(new_content_line)

# 将多余字符替换为空字符

new_content_lines = re.sub(r'\'', "", new_content_lines)

# 去除空行

if new_content_lines == '':

pass

else:

fw.write(new_content_lines + '\n'.encode('gbk'))

fw.close()

# 清空 record_txt_file文件内容

fw_record = codecs.open(record_txt_file, "a", 'gbk')

fw_record.seek(0)

fw_record.truncate()

# 自动化测试【一位整数乘法】(10个数字两两相乘,共10*10=100种情况)

for i in range(1, 10):

for j in range(1, 10):

real_value = i * j

# dlg_spec.window(title=str(i), control_type="Button").draw_outline(colour="red", thickness=3)

dlg_spec.window(title=str(i), control_type="Button").click()

# dlg_spec.window(title="加", control_type="Button").draw_outline(colour="red", thickness=3)

dlg_spec.window(title="乘", control_type="Button").click()

# dlg_spec.window(title=str(j), control_type="Button").draw_outline(colour="red", thickness=3)

dlg_spec.window(title=str(j), control_type="Button").click()

# dlg_spec.window(title="等于", control_type="Button").draw_outline(colour="red", thickness=3)

dlg_spec.window(title="等于", control_type="Button").click()

# 选中结果框

# dlg_spec.window(title="结果").draw_outline(colour="red", thickness=3)

# 复制内容

send_keys("^c")

# 打开剪贴板

wc.OpenClipboard()

# 获取剪贴板内容

copy_text = wc.GetClipboardData(win32con.CF_TEXT)

# 关闭剪贴板

wc.CloseClipboard()

# 获取计算结果

calc_value = copy_text.strip('\0')

# 判断计算器计算结果

if calc_value == str(real_value):

record = "%d×%d=%s 【正确】" % (i, j, calc_value)

print record

else:

record = "%d×%d=%s 【错误】" % (i, j, calc_value)

print record

# 将检测信息另存为日志txt文件

fw_record = codecs.open(record_txt_file, "a", 'gbk')

fw_record.write(record + '\n'.encode('gbk'))

fw_record.close()

程序运行效果

02a545718bd531dbe51f80037d36af13.png

219d3632baa511db70a8176d36e5693f.png

832fa90fbe2dd94e56c75e112d095265.gif

本文分享 CSDN - 乐观的lishan。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值