精华内容
下载资源
问答
  • 奖金 Bonus是一个纯python GUI库,在开发过程中围绕tkinter进行了包装。 Bonus的目标是使其能够制作出流畅运行且外观精美的各种项目(应用程序,游戏等),而无需开发人员重新创建轮子。
  • python ui 自动化工具 uiautomation

    千次阅读 2019-08-23 15:47:33
    开始时带着一点点抗拒慢慢地熟悉起来,后来发现python uiautomation 自动化非常有意思,可以做很多你想象不到的事情,特此记录一下。 简介 uiautomation 是在 GitHub 上的一个开源项目项目地址。总体来说,ui...

    前言

    实习的生活真的就是打杂啊,不是测试人员却要搞这一块东西。开始时带着一点点抗拒慢慢地熟悉起来,后来发现python uiautomation 自动化非常有意思,可以做很多你想象不到的事情,特此记录一下。

    简介

    uiautomation 是在 GitHub 上的一个开源项目项目地址。总体来说,uiautomation 可以在 windows 平台模拟鼠标和键盘操作。安装的话,可以直接 pip install 。

    具体使用

    分为两步

    第一步 检索目标 UI 界面上的所有的控件

    一般来说我会使用命令

    automation.py c –r –d1 –t0 -n
    

    要执行这个命令,当然你首先要在 python 的安装目录下找到 automation.py 这个脚本,找到之后在 doc 窗口中执行。执行该命令后,并不会直接输出控件信息,该命令会留出 3 秒钟的时间
    在这里插入图片描述
    让你找到你希望分析的目标 UI 界面,在这三秒钟内你只要让你要分析的目标 UI 界面获得焦点即可。
    在这里插入图片描述
    在分析结果中可以看到 ControlType 和 Name,这两个是我们控制 UI 界面最关心的属性。

    第二步 在代码中寻找控件

    GitHub 上的 doc 上列举了两种方法,一种是自己根据 Name 属性一层一层地往下找,一种是直接让程序自己深度搜索,这种方法需要制定搜索的最大深度,为了简便,我一般使用后者。如下代码所示就是找Nameshow的 目录树节点,搜索深度 search_depth为 5。

    item = demo.TreeItemControl(searchDepth=5, Name="show")
    

    找到控件之后就可以对其控制了,其开放的控制接口有很多,比如说单机,双击,拖拽之类,还可以直接修改内容。

    生活中可以用来做啥?

    自动修改一些必须在 UI 界面操作的事情。除了 uiautomation 作者举的批量修改 pdf 书签名称之类的,感觉应该还是有很多其他事情可以做的。

    展开全文
  • 最近,微软开源了一款非常强大的 Python 自动化依赖库:playwright-python 它支持主流的浏览器,包含:Chrome、Firefox、Safari、Microsoft Edge 等,同时支持以无头模式、有头模式运行 playwright-python提供了...

    1. 前言

    最近,微软开源了一款非常强大的 Python 自动化依赖库:playwright-python

    它支持主流的浏览器,包含:Chrome、Firefox、Safari、Microsoft Edge 等,同时支持以无头模式、有头模式运行

    playwright-python 提供了同步、异步的 API,可以结合 Pytest 测试框架使用,并且支持浏览器端的自动化脚本录制

    项目地址:

    https://github.com/microsoft/playwright-python

    2. 准备

    在实战之前,我们只需要 2 步

    第 1 步,安装 playwright-python 依赖库 

    # 安装依赖库
    pip3 install playwright

    第 2 步,安装主流的浏览器驱动

    这样,会将 Chromeium、Firefox、Webkit 浏览器驱动下载到本地

    # 安装浏览器驱动
    python -m playwright install

    3. 实战一下

    3-1 录制脚本

    我们先查看录制脚本的命令说明

    图片

    其中

    • python -m playwright codegen  录制脚本

    • --help  帮助文档

    • -o  生成自动化脚本的目录

    • --target 脚本语言,包含 JS 和 Python,分别对应值为:python 和 javascript

    • -b  指定浏览器驱动

    比如
    # 我们通过下面命令打开 Chrome 浏览器开始录制脚本
    # 指定生成语言为:Python(默认Python,可选)
    # 保存的文件名:1.py(可选)
    # 浏览器驱动:webkit(默认webkit,可选)
    # 最后跟着要打开的目标网站(默认仅仅是打开浏览器,可选)
    python -m playwright codegen --target python -o '1.py' -b webkit https://www.baidu.com

    接着,在浏览器模拟搜索一次的操作,然后关闭浏览器

    图片

    最后,自动化脚本会自动生成,保存到文件中

    from playwright import sync_playwright
    
    def run(playwright):
        browser = playwright.webkit.launch(headless=False)
        context = browser.newContext()
    
        # Open new page
        page = context.newPage()
    
        # Go to https://www.baidu.com/
        page.goto("https://www.baidu.com/")
    
        # Fill input[name="wd"]
        page.fill("input[name=\"wd\"]", "AirPython")
    
        # Press Enter
        # with page.expect_navigation(url="https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=AirPython&fenlei=256&rsv_pq=a1739d870005eec3&rsv_t=e640wwS33ra1Koivxvy1WyTxyknRwnllWiw4JBqIYd/KUN/WKpWLtL2b2+0&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=21&rsv_sug1=18&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=6199&rsv_sug4=6199"):
        with page.expect_navigation():
            page.press("input[name=\"wd\"]", "Enter")
    
        # Close page
        page.close()
    
        # ---------------------
        context.close()
        browser.close()
    
    with sync_playwright() as playwright:
        run(playwright)
    

    3-2 同步

    同步的关键字为:sync_playwright

    比如,我们依次使用三个浏览器内核打开浏览器,然后百度一下,接着对在搜索界面截图,最后关闭浏览器

    from time import sleep
    
    from playwright import sync_playwright
    
    # 注意:默认是无头模式
    
    with sync_playwright() as p:
        # 分别对应三个浏览器驱动
        for browser_type in [p.chromium, p.firefox, p.webkit]:
    
            # 指定为有头模式,方便查看
            browser = browser_type.launch(headless=False)
            page = browser.newPage()
            page.goto('http://baidu.com')
    
            # 执行一次搜索操作
            page.fill("input[name=\"wd\"]", "AirPython")
            with page.expect_navigation():
                page.press("input[name=\"wd\"]", "Enter")
    
            # 等待页面加载完全
            page.waitForSelector("text=百度热榜")
    
            # 截图
            page.screenshot(path=f'example-{browser_type.name}.png')
    
            # 休眠5s
            sleep(5)
    
            # 关闭浏览器
            browser.close()
    

    需要指出的是,playwright-python 内置的 API 基本上囊括常见的自动化操作

    3-3 异步

    异步步的关键字为:async_playwright

    结合 asyncio,我们同时执行上面的操作

    import asyncio
    
    from playwright import async_playwright
    
    # 异步执行
    async def main():
        async with async_playwright() as p:
            for browser_type in [p.chromium, p.firefox, p.webkit]:
                # 指定为有头模式,方便查看
                browser = await browser_type.launch(headless=False)
                page = await browser.newPage()
    
                await page.goto('http://baidu.com')
    
                # 执行一次搜索操作
                await page.fill("input[name=\"wd\"]", "AirPython")
                await page.press("input[name=\"wd\"]", "Enter")
    
                # 等待页面加载完全
                await page.waitForSelector("text=百度热榜")
    
                # 截图
                await page.screenshot(path=f'example-{browser_type.name}.png')
    
                await browser.close()
    
    
    asyncio.get_event_loop().run_until_complete(main())

    4. 最后

    事实上,Playwright 是一个跨语言的自动化框架,支持 Python、Java、JS 等

    Playwright 相比传统的自动化框架 Selenium 来说,在 Context 上下文及 API 使用上,显得更简洁且强大,更加详细的功能可以通过阅读原文去解锁

    展开全文
  • 一整套的python2.7、eric4、pyqt4整合,直接安装就可以用,自己已经用了很久了,有不少人找我要,就上传上来吧。
  • TRunner_autotests TRunner工具Python UI自动测试要获取ChromeDriver,请将webdriver文件夹路径添加到PATH中。将LOGIN放在第一行,并将Password放在第二行,将credls.txt放在D:\
  • Lovelace UI模块和Python迁移工具 要求 点3 PyYAML 要求 在Raspbian Stretch上,默认情况下未安装pip3 。 要安装pip3 ,请运行: $ sudo apt-get install python3-pip 克隆此存储库后,可以运行: $ pip3 ...
  • 今天小编就为大家分享一篇python自动化UI工具发送QQ消息的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 近段时间需要针对MCU实现一个老化测试工具,MCU使用的板子是ESP32。在此做个总结。 本次开发过程中涉及到的技术点: Python(V3.7.3) MicroPython:极精简高效的实现了Python3语言。它包含Python标准库的一小...

    Summary

        近段时间需要针对MCU实现一个老化测试工具,MCU使用的板子是ESP32。在此做个总结。

        本次开发过程中涉及到的技术点:

    • Python(V3.7.3)
    • MicroPython:极精简高效的实现了Python3语言。它包含Python标准库的一小部分,能在单片机和受限环境中运行
    • Protocol Buffers:are a flexible, efficient, automated mechanism for serializing structured data;本次使用proto3
    • serial:串口通信协议,PC通过串口与板子进行通信
    • PyQt5(V5.11.3):将ui文件转换成py文件
    • QtDesigner(V5.11.3):图形设计器
    • PyInstaller(V3.6):将Python工程打包成可执行的exe程序

    操作系统:win7 64bit

    问题汇总

    • 在Python环境调好的脚本,上传到MCU上后运行报错:ImportError: no module named

    这是因为MicroPython仅包含Python标准款的一小部分

    • 打包成exe后,上传到MCU的脚本运行第一行就报语法错误

    因为py文件在PC端被加密了,在exe中上传的是加密后的文件;不想频繁的解密,就将上传源文件改成txt格式、目标文件的格式还是py的,这样在MCU上仍旧可以跑

    • QtDesigner重新打开ui文件 或者 将ui文件转换成py文件,第一行就报语法错误

    因为ui文件也被加密了;后与IT同事协商此类文件可不加密。这次任务中真的是被文件加密整过好几次了,各种原因查找,就是不见效;后面还是其他同事无意提起,是否是文件被加密了导致的,一试果然是;这样也导致第一版本交付的是源码。

    关于Python的UI开发

    • UI界面与业务逻辑分离处理实现、数据处理|读取(槽函数 耗时)  与 界面显示数据分离、自定义信号和槽函数定义和实现
    • 主线程捕获子线程的异常
    layout文件:layout_testtool.py(直接由ui文件转换而来)
    
    业务处理逻辑文件:run_testtool.py
    
    第一部分:界面加载、控件自带信号与槽函数连接
    class TestToolWindow(QtWidgets.QMainWindow):
    
        def __init__(self, parent=None):
            super(TestToolWindow, self).__init__(parent)
    
            # 加载界面
            # Ui_MainWindow是在layout文件中定义的类
            self.ui = layout_testtool.Ui_MainWindow()
            self.ui.setupUi(self)
            
            # 将button的clicked信号与槽函数连接
            self.ui.getComListBtn.clicked.connect(self.get_com_list)
    
            # 实例化线程
            self.bucket = queue.Queue()
            self.thread = BackedThread(self.bucket)
            # 线程中定义的信号 连接到槽函数,主要用来更新界面
            self.thread.signal_list.connect(self.handleDisplay)
            self.thread.signal_err.connect(self.handleErr)
    
        def get_com_list(self):
            # 启动线程
            self.thread.start()
        
        def handleDisplay(self, val):
            pass
    
        def handleErr(self):
            try:
                exc = self.bucket.get(block=False)
            except queue.Empty:
                pass
            # 处理获取到的异常信息,比方界面提示
            else:
                pass
    
    第二部分:在线程中处理业务逻辑
    class BackedThread(QThread):
        # 自定义信号,业务逻辑处理完毕后发射数据,以便在自定义信号的槽函数中更新界面
        signal_list= PQC.pyqtSignal(list)
        signal_err = PQC.pyqtSignal(str)
    
        # 初始化函数,根据需求初始化各种实例化变量
        def __init__(bucket):
            self.bucket = bucket
            pass
        # 处理业务逻辑;当调用start()方法后,会运行run函数
        def run(self):
            try:
                # 逻辑处理,balabala,处理完毕后发送数据
                self.signal_list.emit(com_list)
                pass
            except Exception:
                # 将子线程的异常信息放到队列中
                self.bucket.put(sys.exc_info())
                self.signal_err.emit("F")

    关于打包

    这个项目包含多个文件夹及文件,故只需要针对入口py文件进行打包。

    首先:使用如下命令:pyinstaller -F run_testtool.py,生成run_testtool.spec文件

    然后:编辑文件run_testtool.spec

    在a = Analysis(...,
        hiddenimports=[])部分将所有import自定义的py文件给添加进来,比方:
    
    a = Analysis(['run_testtool.py'],
                 pathex=['E:\\AgingTestExec'],
                 binaries=[],
                 datas=[],
                 hiddenimports=['basic_cmd','basic_cmd.basic','basic_cmd.basic_cmd_pb2'],
                ...)

    后续使用该配置文档进行打包即可,命令:pyinstaller -F -w run_testtool.spec

    展开全文
  • 个人遇到过小的需求,windows自动水群发送垃圾消息,使用一些特别简单易上手的小工具,快速实现功能需求(而不是使用一些重量级的还需要额外花时间去熟悉功能语法的大工具,如UI自动化工具sikulix)。在一番摸索下,...

    文章来源: 敏而好学论坛 嗨学网www.piaodoo.com 欢迎大家相互学习

    概述

    个人遇到过小的需求,windows自动水群发送垃圾消息,使用一些特别简单易上手的小工具,快速实现功能需求(而不是使用一些重量级的还需要额外花时间去熟悉功能语法的大工具,如UI自动化工具sikulix)。在一番摸索下,得出一番结论:

    对于多平台的UI自动复杂操作,还是去学sikulix吧,这不是啃一点win32 api获取窗口句柄就能轻松解决的,毕竟sikulix是MIT大佬折腾出来的。而且,原理也更复杂(通过使用opencv对窗体控件进行识别,进而实现控制操作)。

    对于简单的操作(控制剪切板缓存、自动化keyboard操作、desktop光标移动、鼠标点击动作等)可以使用python的一些包进行简单的模拟实现:pyautogui / pywin32 等。

    pyautogui是美国一个知名python程序员也是优秀的python作者Al Sweigart维护的一个模块,个人是比较推崇的,因为相对来说,整个模块都是python写的,可读性比较好,对一般功能的封装得很好。pywin32就有点不一样了,这个完全是用python对win32 api接口进行python api的转换,用起来比较复杂,对windows api及c sharp有一定了解,加上文档全但是基本就是原样包windows api的文档抄了一下,所以看起来是相当痛苦的。(但是实际上pywin32跟pyautogui的思路都是使用windows api获取窗体程序句柄进而实现自动化操控,从实现原理上看来,也注定这种方式是不可能完成过于复杂的UI自动化作业的。)

    目标

    使用pyautogui,实现自动化发送qq消息。

    实现

    安装三方python包,pyautogui

    pip install pyautogui

    引入包,进行自动化脚本编写 —— 相当简单易读,参考api文档

    ①打开对应的群聊天窗口,才能获取到句柄列表,设置发送使用ctrl+enter键(方便自动化控制)

    嗨学网

    ②编写代码

    import pyautogui as gui
    import time
    

    print(gui.getWindows()) # getWindows获取所有活动窗体程序句柄对象的字典,key为窗体程序title,value为hwnd对象
    gui.Window(gui.getWindows().get(‘Python数据分析交流群’)).set_foreground()

    Window使用hwnd对象创建window对象,对窗体程序进行控制

    这一部分在提供的官方api文档里并没有提到,这是作者故意没有提及的窗体程序句柄处理,才对win api封装了几个功能

    for i in range(10):
    gui.typewrite(time.asctime()+’ : '+str(i)) # typewrite可以参考文档,实际是模拟键盘输入,所以当这里的内容换成中文时,是无效的
    gui.hotkey(‘ctrl’,‘enter’) # hotkey模拟组合键
    time.sleep(10)

    >>>> print内容
    {’’: <ctypes.wintypes.LP_c_long object at 0x0000027E50544D48>, ‘SelfProject [C:\Users\Stan Pao\PycharmProjects\SelfProject] -
    …\test2.py [SelfProject] - PyCharm’: <ctypes.wintypes.LP_c_long object at 0x0000027E50544F48>, ‘Python数据分析交流群’:
    <ctypes.wintypes.LP_c_long object at 0x0000027E505AB048>, ‘南京捷安特精英俱乐部’: <ctypes.wintypes.LP_c_long object at
    0x0000027E505AB0C8>, ‘pyautogui - OneNote’: <ctypes.wintypes.LP_c_long object at 0x0000027E505AB148>, ‘写文章-CSDN博客 -
    Google Chrome’: <ctypes.wintypes.LP_c_long object at 0x0000027E505AB1C8>, ‘Program Manager’: <ctypes.wintypes.LP_c_long object at
    0x0000027E505AB248>}

    效果如下:还是很简单好用的~

    嗨学网

    以上这篇python自动化UI工具发送QQ消息的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

                        <p><p></td></tr></table>
    
    原文地址是:http://www.piaodoo.com/thread-13706-1-9.html
    展开全文
  • python自动化UI工具发送QQ消息

    万次阅读 2019-01-04 23:48:50
    个人遇到过小的需求,windows自动水群发送垃圾消息,使用一些特别简单易上手的小工具,快速实现功能需求(而不是使用一些重量级的还需要额外花时间去熟悉功能语法的大工具,如UI自动化工具sikulix)。在一番摸索下,...
  • Python uiautomation自动化测试

    千次阅读 2019-04-18 05:42:18
    简单测试了下, Windows 7环境,管理员权限,可以...这样的话,还是需要网页自动化测试工具。 cd scripts pip install uiautomation automation.py -h https://www.cnblogs.com/Yinkaisheng/p/3444132.html https:...
  • (1)使用python自带的TKinter模块,界面不够美观 (2)pyQT,界面比较美观但是实现度比较复杂 (3)wxPython。推荐选择,是wxWidgets在python语言下的封装。wxWidgets是跨平台的GUI应用编程接口,使用C++编写 ...
  • '计算器小工具' , size = ( 500 , 400 ) ) #容器 self . panel1 = wx . Panel ( self . window ) #控件 self . text_num1 = wx . TextCtrl ( self . panel1 ) #运算数1 self . text_operator = ...
  • Python UI 开发用哪个好?

    千次阅读 2019-03-27 15:47:55
    Python从入门到精通靠首先得知道适合用的开发工具 Linux 下的 Python GUI 开发 Tkinter 基于 Tcl/Tk 的轻量级包装,Tkinter 最大的优点就一个字:快,再一个是 Python 内置。Tk 8.5 之后的外观使用操作系统原生 UI。...
  • 通过Qt开发pythonUI(基础)

    千次阅读 2017-11-22 19:41:45
    Qt是个很强大的ui工具,pyqt就是在Qt的基础上开发的,Qt Designer我也是刚接触,虽然还不知道怎么使用,但是由于有之前的javaGUI开发的windowbuilder经验,所以,感觉很强大,拖拖拽拽就能做一个窗口,但是完成之后...
  • Python UI 开发用哪个好

    千次阅读 2019-04-03 23:33:09
    Python本身语法优美, 但一旦到了GUI就丑陋得不行. wxPython PyQT都要用一种不够优美的方式来描述GUI. 而且你有个很尴尬的问题, 要不要学一个你根本无法掌控的工具? 你花了钱买了本 wxPython in Action, 学熟练了. 这...
  • 这一节我们实现一个简单的ui测试工具。 该工具的作用是访问某个页面,然后根据css选择器去定位页面上的元素,最后判断页面上元素的个数与我们的预期是否相符。 举一个具体的例子,比如我们去访问www.itest.info这个...
  • 终端输入"appium-doctor",若全部项显示对勾则安装成功,nesessary的按道理都需要安装,上图除了error是xcode的版本不对,这个是ios的ui自动化一定要安装的,但是此次针对安卓版本就没有安装 2、配置两个特殊的环境...
  • uiautomatorviewer是android-sdk自带的一个元素定位工具,非常简单好用,使用uiautomatorviewer,你可以检查一个应用的UI来查看应用的布局和组件以及相关的属性。 1、启动uiautomatorviewer.bat,打开sdk安装目录到...
  • 它是用于混淆python脚本,将混淆后的脚本绑定到固定计算机或使混淆后的脚本失效的工具。 通过pip安装: pip install pyarmor-webui 在默认的Web浏览器中启动它: pyarmor-webui 轻量级Web服务器将在默认端口9096...
  • 在做Python UI自动化测试时遇到这种情况,我们可以借助一个工具autoIT来实现上传图片或者是文件; 一、具体操作步骤如下: ①、首先下载安装autoIT(自行百度下载即可); 其中: AutoIt Windows Info 用于识别...
  • /usr/bin/env python # -*- coding: utf-8 -*- """ @author: 古风尘 @contact: https://blog.csdn.net/gufenchen @others: All by GuFengChen, All rights reserved-- Created on 2019/5/12 @desc: "...
  • Selenium提供了一种回放工具,用于编写功能测试,而无需学习测试脚本语言(Selenium IDE)。它还提供了一种特定于测试领域的语言(Selenese),可以用多种流行的编程语言编写测试,包括C#,Groovy,Java,Perl,PHP...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,708
精华内容 683
关键字:

pythonui工具

python 订阅