pywinauto二次封装(pywinnat.py)
将pywinauto常用方法进行封装,使得pywinauto用起来更简单
#头文件的引入
from pywinauto import application
from pywinauto import clipboard
import SendKeys
import win32api
import win32con
import os, sys, time #二次封装的类
class Pywin(object):
#=======================
# pywin framwork main class
#======================= SLEEP_TIME = 1
#初始化方法,初始化一个app
def __init__(self):
self.app = application.Application() #启动应用程序
def run(self, tool_name):
self.app.start_(tool_name)
time.sleep(self.SLEEP_TIME) #连接应用程序
def connect(self, tool_name):
self.app.connect_(tool_name)
time.sleep(self.SLEEP_TIME) #关闭应用程序
def close(self, tool_name):
window_name = window_name.decode('utf-8')
self.app[window_name].Close() #最大化窗口
def max_window(self, window_name):
window_name = window_name.decode('utf-8')
self.app[window_name].Maximize()
time.sleep(self.SLEEP_TIME) #菜单点击
def menu_click(self, window_name, menulist):
window_name = window_name.decode('utf-8')
menulist = menulist.decode('utf-8')
self.app[window_name].MenuSelect(menulist)
time.sleep(self.SLEEP_TIME) #输入内容
def input(self, window_name, controller, content):
window_name = window_name.decode('utf-8')
controller = controller.decode('utf-8')
content = content.decode('utf-8')
self.app[window_name][controller].TypeKeys(content)
time.sleep(self.SLEEP_TIME) #鼠标左键点击
def click(self, window_name, controller, x = 0,y = 0):
window_name = window_name.decode('utf-8')
controller = controller.decode('utf-8')
self.app[window_name][controller].Click(button = "left", pressed = "", coords = (x, y))
time.sleep(self.SLEEP_TIME) #鼠标左键点击(双击)
def double_click(self, window_name, controller, x = 0,y = 0):
window_name = window_name.decode('utf-8')
controller = controller.decode('utf-8')
self.app[window_name][controller].DoubleClick(button = "left", pressed = "", coords = (x, y))
time.sleep(self.SLEEP_TIME) #鼠标右键点击,菜单选择
def right_click(self, window_name, controller, order):
window_name = window_name.decode('utf-8')
controller = controller.decode('utf-8')
self.app[window_name][controller].RightClick()
for down in range(order):
SendKeys.SendKeys('{DOWN}')
time.sleep(0.5)
SendKeys.SendKeys('{ENTER}')
time.sleep(self.SLEEP_TIME) #获取剪切板内容
def getclipboard(self):
return clipboard.GetData(format = 13) #使用win32点击屏幕
def win32_left_click(self, (x, y), times):
for count in range(times):
win32api.SetCursorPos((x, y))
win32api.mouse_event(win32con.MOUSEEVqENTF_LEFTDOWN, 0, 0, 0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0,0)
time.sleep(self.SLEEP_TIME) #使用win32点击屏幕
def win32_right_click(self, (x, y), times):
for count in range(times):
win32api.SetCursorPos((x, y))
win32api.mouse_event(win32con.MOUSEEVqENTF_RIGHTDOWN, 0, 0, 0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP, 0, 0, 0,0)
time.sleep(self.SLEEP_TIME) if __name__ == '__main__': app = Pywin()
#app.run('notepad.exe')
pywinauto二次封装(pywinnat.py)的更多相关文章
- HtmlTestRunner二次封装(TestRunner.py)
将HtmlTestRunner进行二次封装,使报告生成的更方便 import HTMLTestRunner import unittest import time, os class TestRunn ...
- Python_selenium二次封装selenium的几个方法
Python_selenium二次封装selenium的几个方法 将常用的几个webdriver方法封装到自己写的一个类中去,此实例中是将"浏览器后退.浏览器前进.打开站点和关闭浏览器&qu ...
- selenium + python自动化测试unittest框架学习(五)webdriver的二次封装
因为webdriver的api方法很长,再加上大多数的定位方式是以xpath方式定位,更加让代码看起来超级长,为了使整体的代码看起来整洁,对webdriver进行封装,学习资料来源于虫师的<se ...
- Python+Selenium中级篇之-二次封装Selenium中几个方法
本文来介绍,如何把常用的几个webdriver的方法封装到自己写的一个类中去,这个封装过程叫二次封装Selenium方法.我们把打开站点,浏览器前进和后退,关闭和退出浏览器这这个方法封装到一个新写的类 ...
- web自动化针对PO模式进行二次封装之basepage
在PO模式当中,我们做到了页面对象与测试用例的分离,但在页面对象编写时,我们仍然还有优化的空间.页面对象有一些共同的基本操作,可以封装起来,并可以在基本操作当中加上日志和异常截图的处理.比如说我们在查 ...
- DRF框架(五)——context传参,二次封装Response类,两个视图基类(APIView/GenericAPIView),视图扩展类(mixins),子类视图(工具视图),视图集(viewsets),工具视图集
复习 1.整体修改与局部修改 # 序列化get (给前端传递参数) #查询 ser_obj = ModelSerializer(model_obj) #只传递一个参数,默认是instance的参数,查 ...
- drf序列化高级、自定义只读只写、序列化覆盖字段、二次封装Response、数据库查询优化(断关联)、十大接口、视图家族
目录 自定义只读 自定义只写 序列化覆盖字段 二次封装Response 数据库关系分析 断外键关联关系 ORM操作外键关系 ORM四种关联关系 基表 系列化类其他配置(了解) 十大接口 BaseSer ...
- 二次封装 Reponse,视图家族
复习 """ 1.整体修改与局部修改 # 序列化 ser_obj = ModelSerializer(model_obj) # 反序列化,save() => cre ...
- Python笔记_第四篇_高阶编程_二次封装
1.二次封装: 二次封装其实就是对一个类或者一个方法进行二次的改造增加新的功能. 2.一个类的二次封装: 我们以一个进程为例,我们把Process这个库进行二次封装,增加一些功能,在调用. thoma ...
随机推荐
- ie7兼容性 绝对定位元素之间的遮盖问题
今天在调试ie7兼容性问题的时候,遇到了一个棘手的问题,解决了一天无果,晚上看到一位大神写的心得,最终解决. 网址:http://www.jb51.net/css/148606.html#commen ...
- VirtualBox中centos网络配置
VirtualBox图形界面下有四种网络接入方式,它们分别是: 1.NAT 网络地址转换模式(NAT,Network Address Translation) 2.Bridged Adapter 桥接 ...
- Python 基础【第八篇】变量
1.变量定义: 给数据进行命名,数据的名字就叫做变量 2.变量格式: [变量名] = [值] 注:变量名命名需要满足下面两条准则 准则一:标示符开头不能为数字.不能包含空格.特殊字符准则二:标示符不能 ...
- windows下搭建属于自己的web服务器
这次需要记录一下我搭建web服务器的过程. 第一步,确定自己要使用的平台:这次我用的是windows2008 server版本 第二步,计划是想要纯手工的安装apache.php等.但是我们可以下载一 ...
- 【区间覆盖问题】uva 10020 - Minimal coverage
可以说是区间覆盖问题的例题... Note: 区间包含+排序扫描: 要求覆盖区间[s, t]; 1.把各区间按照Left从小到大排序,如果区间1的起点大于s,则无解(因为其他区间的左起点更大):否则选 ...
- 用ASP取出HTML里面的图片地址的函数
用ASP取出HTML里面的图片地址的函数主要原理就是用正则判断的属性.这在采集程序中将非常有用. 函数如下: 以下是引用片段: Function ShowPic(str) Set objRegExp ...
- 微信平台(一)--获取access_token
事前思路准备 说在前面:如果要获取access_token,那么你需要appid,appsecret;另外需要post请求连接https://api.weixin.qq.com/cgi-bin/tok ...
- ASP.NET Web Service如何工作(1)
ASP.NET Web Service如何工作(1) [日期:2003-06-26] 来源:CSDN 作者:sunnyzhao(翻译) [字体:大 中 小] Summary ASP.NET Web ...
- 捕获JSON 解析错误
$json = <<<JSON { "origin":"Delhi", "destination":"Londo ...
- Objective-C 【多态】
------------------------------------------- 多态的概念.实现以及注意事项 程序中的多态:不同的对象 以自己的方式去 响应 相同方法名(父类同 ...