-
2021-03-05 13:32:20
做为一个Python新手,Linux下编程,想知道Python UI开发用哪个库最好,Python UI开发最常用到的库又有哪些。不妨听听精通python的朋友们怎么说。
PyQt,PyGTK,wxPython,TkInter等,都是最常听说或是会用到的库,那么哪个是最好用的呢?
观点一:Tkinter是首选
因为tk本身就是为了快速GUI开发的,后来经过多年的发展,目前变得很成熟了;并且Tkiner是python内置的,也是标准的GUI库。
这里推荐GTK+3的python绑定PyGobject。在各个系统上的表现都是原生态ui界面形态。且是python自带的库,你不需要额外花费精力去安装它,而且它的使用也是很简单的。
观点二:Python UI的噩梦
Python编程语言的本身是语法简单优美,问题是只要遇到了GUI就是噩梦,代码丑陋得不要不要的。
Linux下编程,wxPython、PyQT都需要用一种并不算优美的方式来描述GUI。感觉Python永远要依靠别的库来扩展自身,它真的没有完全独立的状态。所以我个人更倾向于用Python的WEB框架建立一个本地服务器,学一些HTML5,再发挥python的特长,来个整合资源。把GUI的渲染交给浏览器,Python来处理逻辑的部分,岂不是很好?
Python UI开发最常用到的库是哪个?以上两种观点是最普遍的,你的观点又是什么呢?
玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd5847.html
相关文章 Recommend
更多相关内容 -
最新版python UI自动化脚本源码
2021-03-11 11:23:36UI自动化源码 -
python UI自动化自动关闭浏览器学习记录
2021-01-20 02:57:18python UI自动化自动关闭浏览器学习记录 小白python自动化的第一天 之前都是看别人的文章 没想过自己也有记录学习的一天 不过成长嘛 总要有第一次 某天利用公司网站写自动化demo的时候 简简单单的写完 进主页找到... -
PythonUI:使用Python开发Swift App的完整框架
2021-03-27 17:24:55PythonUI 使用Python开发Swift App的完整框架 开始 创建应用 from PythonUI import App app = App . App ( platform = str ( 'macos' )) app . set_name ( str ( "PuApp" )) # Your App Name 建造 from PythonUI ... -
python UI自动化(一)
2022-02-11 14:10:02一直以来都不是很想做UI自动化,原因:系统的稳定性差,UI界面经常变化等等。但是遇到接口又不稳定,还经常从接口写入的数据有误的而界面UI相对不是很复杂的情况下,UI自动化也是可以考虑的。比如最近在遇到一系统,...前言:
一直以来都不是很想做UI自动化,原因:系统的稳定性差,UI界面经常变化等等。但是遇到接口又不稳定,还经常从接口写入的数据有误的而界面UI相对不是很复杂的情况下,UI自动化也是可以考虑的。比如最近在遇到一系统,研发明确的说不要用接口进行写入数据,要从界面上模拟用户真实的操作,其实也是可以理解的,前后端分离,好多控制什么的后端接口没有做处理,为了给用户快速的展示或是项目快速的完工,都让前端做了限制,这样更直观些。但如果遇到一个测试有多少条多少条数据时才怎么怎么样,出现什么样的结果。这时如果还是手动去执行真是要哭了。不让用接口,只能想到用简单的UI自动化了。所以就只好把放弃了好久的UI自动化知识重新拾起来啦。不啰嗦了,转入正题。
准备环境
现在UI自动化也有很多方法,我选择的是python+selenium+HTMLTestRunner
需要准备的是python环境。个人学习研究使用,所以开发工具使用的是破解pyCharm。安装破解在此就不多说了,网上有很多,待安装破解完成后弄个简单的实例进行测试一下。需要安装chrome驱动浏览器,可以在“https://chromedriver.storage.googleapis.com/index.html”中找到当前自己电脑对应的版本下载。
如果是使用的是python3时,会遇到pip install HTMLTestRunner.html安装失败,因官网的是支持python2的,语法与python3不兼容,所以需要到官网http://tungwaiyip.info/software/HTMLTestRunner.html下载,下载后修改相应的内容后放入到python安装目录的lib下,即可。HTMLTestRunner.py 修改内容:第94行,将import StringIO修改成import io
第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()
第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:
第631行,将print >> sys.stderr, ‘\nTime Elapsed: %s’ % (self.stopTime-self.startTime)修改成print(sys.stderr, ‘\nTime Elapsed: %s’ % (self.stopTime-self.startTime))
第766行,将uo = o.decode(‘latin-1’)修改成uo = e
第772行,将ue = e.decode(‘latin-1’)修改成ue = e实例:
import unittest import time import HTMLTestRunner from selenium import webdriver class MyTestCase(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome('E:\\0-auto\driver\\chromedriver.exe') #手动指定chrome驱动程序路径 self.driver.implicitly_wait(10) #设置隐式等待时间 self.base_url = 'http://www.baidu.com' def test_search(self): u''' test search ''' driver = self.driver driver.get(self.base_url) #打开网址 driver.find_element_by_id('kw').send_keys(u'谷爱凌') #定位输入框,输入搜索内容 driver.find_element_by_id('su').click() #定位按钮,并点击 time.sleep(2) def tearDown(self): self.driver.quit() if __name__ == '__main__': with open('report_search.html','wb') as fp: #当前路径下打开一个文件,用于报告写入 runner = HTMLTestRunner.HTMLTestRunner( #使用HTMLTestRunner生成报告 stream=fp, title='report_search', description=u'running case:' ) runner.run(MyTestCase('test_search'))
执行结果
-
python+UI自动化测试框架
2021-11-29 11:15:40适用于UI自动化测试框架测试学习人员 采用python+selenium+unittest+HTMLTestRunner+PO模式进行自动化框架的搭建 -
Python UI自动化 编程(一) UIAutomation
2021-07-26 10:58:34Python UI自动化 编程 第一章 Python 机器学习入门之pandas的使用 文章目录Python UI自动化 编程前言一、什么是Python UI自动化 编程二、环境说明1、Python环境:Python 3.82、IDE: Pycharm3、使用的库:UI...Python UI自动化 编程
第一章 Python UI自动化 编程入门之打开文件夹双击文件
文章目录
前言
最近学习了Python的UI自动化编程,打算记录一下学习经历,梳理一下知识框架。由于我也是初学者,如有错误欢迎指出!
提示:以下是本篇文章正文内容,下面案例可供参考
一、什么是Python UI自动化 编程
就我个人的理解,UI编程包括但不限于UI界面的开发,UI界面的测试。而本系列文章的主要侧重于UI界面的自动化操作。通过一段代码实现电脑自行点击、打开某文件或者修改某进程的操作。
利用Python编写脚本实现UI界面的自动化操作,解放双手,提高办公效率。
二、环境说明
1、Python环境:Python 3.8
2、IDE: Pycharm
3、使用的库:UIAutomation
三、使用步骤
1.引入库: uiautomation
打开Pycharm 点击左上角File-Settings
点击Project-Python-Interpreder-加号
在搜索栏输入【uiautomation】点击搜索结果-Install Package
2.打开文件夹
代码如下(示例):
os.startfile(folder_path)
该处使用os库重点的startfile()打开文件夹
3、找到该文件夹
使用软件Inspect查找该文件夹的树形结构
可以看到我的Typora文件夹的目录树形图。我选择的区域是列表中的白色区域,所以Inspect给我返回的树形图就一直到了"项目视图-列表",这样我们就可以利用UIAutomation通过树状图找到文件夹的项目列表了。
代码如下
list = uiautomation.WindowControl(searchDepth=1, ClassName="CabinetWClass")\ .ListControl(ClassName="UIItemsView") return list
searchDepth是搜索深度,根据刚刚的树形图有7级深度。我们当然可以一级一级往下写,这样不但准确,而且搜索速度也快。但是如果树状图深度太大,我们也可以挑选中间节点来写,更改相应的searchDepth参数就可以了。ClassName是每个节点的ClassName,同时也可以指定参数Name。而WindowControl、ListControl这些主要是看Inspect软件找到的UI控制类型,如下图这种情况,该节点则调用ListControl。而所有的这些节点信息都可以从软件Inspect找到。
4、双击Typora.exe
我们已经找到了项目列表了,所以我们也可以找到列表中的元素,根据Inspect定位元素节点后,我们可以通过UIAutomation来找到该节点:
list_item = uiautomation.WindowControl(searchDepth=1, ClassName="CabinetWClass")\ .ListControl(ClassName="UIItemsView")\ .ListItemControl(Name="Typora.exe") return list_item
如果我们想要点击或者双击该文件只需:
list_item.Click() # 单击 list_item.DoubleClick() # 双击
5、代码总览
import os import uiautomation as auto def show_folder(folder_path): """ 打开文件夹 :param folder_path: :return: """ os.startfile(folder_path) def findTarget(): """ uiautomation :param filename: 文件名 :return: """ target = auto.WindowControl(searchDepth=1, ClassName="CabinetWClass") \ .ListControl(ClassName="UIItemsView")\ .ListItemControl(Name="Typora.exe") return target if __name__ == '__main__': show_folder("D:\\Typora") target = findTarget() target.DoubleClick()
总结
以上就是今天要讲的内容,本文仅仅简单介绍了UIAutomation的使用,而UIAutomation提供了大量能使我们快速便捷地操作UI界面。这篇文章仅仅是开始,接下来我也将继续学习继续记录。
-
Python uiautomation初探,测试Win10计算器
2021-12-12 23:10:36在网上找 Python 客户端自动化测试的库,一般有pywinauto、pywin32、pyautogui、uiautomation。本文仅对 uiautomation 做简单的了解。 MS UI Automation 是 MSAA 技术的一个替代品:即让控件和应用程序具有更好的...在网上找 Python 客户端自动化测试的库,一般有 pywinauto、pywin32、pyautogui、uiautomation。本文仅对 uiautomation 做简单的了解。
MS UI Automation 是 MSAA 技术的一个替代品:即让控件和应用程序具有更好的可达性(accessible)。MS UIA明确定义了两个role:UIA Provider 即软件本身,主要是软件的开发人员依据相应的模式去实现相关的 interface, UIA Client 即自动化脚本和相关的 assistive technology applications,从测试人员的角度出发,主要是调用相应的API去实现自动化测试脚本。
而 uiautomation 的作者根据微软手册,用 Python 和 C++ 对 UI Automation 做了一层封装。
MS UI Automation概述:https://docs.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-overview
作者博客:开源自己用python封装的一个Windows GUI(UI Automation)自动化工具,支持MFC,Windows Forms,WPF,Metro,Qt - YinKaisheng - 博客园
Github地址:https://github.com/yinkaisheng/Python-UIAutomation-for-Windows
参考博客:Uiautomation 在Windows WPF和Qt 产品上的应用_yaoliuwei1426的博客-CSDN博客
参考博客:MS UI Automation简介_ffeiffei的专栏-CSDN博客_uiautomation
根据作者提供的示例,我对 Win10 计算器做了简单的计算测试,代码如下:
import subprocess import uiautomation as uia # 设置全局搜索超时 15s uia.uiautomation.SetGlobalSearchTimeout(15) # 测试Win10计算器 def test_calc(): # 启动计算器进程 subprocess.Popen(args='calc.exe') # 首先从桌面的第一层子控件中找到程序的窗口,再从这个窗口查找子控件 window = uia.WindowControl( searchDepth=1, ClassName='ApplicationFrameWindow', Name='计算器') # 窗口置顶 window.SetTopmost(True) # 根据文档描述,直接从顶层找空间的效率较低,因为每次找都需要去遍历 # 所以这里可以根据inspect查看到的对象树来逐层找 # Name/ClassName/AutomationId都是UIAutomation属性,可以通过工具查看到,类似于网页的选择器 window_main = window.Control( searchDepth=1, ClassName='Windows.UI.Core.CoreWindow') button_group = window_main.Control( searchDepth=1, ClassName='LandmarkTarget') number_group = button_group.Control(searchDepth=1, Name='数字键盘') calc_group = button_group.Control(searchDepth=1, Name='标准运算符') # 模拟按键 window.SendKeys('1') #number_group.ButtonControl(Name='一').Click() calc_group.ButtonControl(Name='加').Click() number_group.ButtonControl(Name='四').Click() calc_group.ButtonControl(Name='等于').Click() result = button_group.Control(AutomationId='NormalOutput').Name print("测试结果:", result, ' bytes:', bytes(result, encoding='utf8').hex()) # 获取到的文本前后有不可见字符,这里先替换掉 result = result.replace(b'\xe2\x80\xad'.decode('utf8'), '').replace( b'\xe2\x80\xac'.decode('utf8'), '') print("测试结束,预期=5,实际={0},{1}".format( result, "测试通过" if result == "5" else "测试失败")) # 通过复制粘贴获取,这样得到的文本没有其他字符 window.SendKeys('{Ctrl}c', waitTime=1) result = uia.GetClipboardText() print("测试结果:", result, ' bytes:', bytes(result, encoding='utf8').hex()) # 截图并保存到指定路径 window.CaptureToImage('C:/Users/1992/Pictures/1.png') # 关闭程序 #window.ButtonControl(Name='关闭').Click() window.GetWindowPattern().Close() if __name__ == '__main__': test_calc()
测试结果:
-
基于python的UI自动化操作
2021-06-07 16:58:17Python+selenium,适合刚入门测试的小白学习,简单明了,有一定的python基础 -
python ui界面设计(二)
2021-11-24 21:14:21在终端使用pyuic5 -o shouye.py shouye.ui -x将ui文件转为.py文件 页面1 实现两个数相加,数字1和数字2为label,数字输入框为LineEdit,结果为PushButton,结果输出框为TextEdit。 添加链接关系: 在setup -
python UI自动化图片断言
2021-12-07 18:07:28by_path(self, lf, rf): # 两张图片对比并返回相似度 li, ri = self.make_regalur_image(Image.open(lf)), \ self.make_regalur_image(Image.open(rf)) return self.calc_similar(li, ri) 2、UI自动化执行时自动截图... -
适用于Windows的Python-UIAutomation-:(请勿使用3.7.6,3.8.1)Microsoft UIAutomation的Python 3包装器。...
2021-02-06 04:56:04uiautomation模块 :China: 不要使用3.7.6和3.8.1,comtypes在这两个版本中不起作用。 安装早期版本或最新版本。 该模块是用于在Windows(视窗XP与SP3中,Windows Vista,Windows 7和视窗8 / 8.1 / 10)。 它支持... -
python ui界面设计(一)
2021-11-24 14:16:131.安装PyQt5和Qt Designer 按win+R后,输入cmd, pip install pyqt5 pip install pyqt5-tools ...安装路径:C:\Users\fylal\AppData\Local\Programs\Python\Python37\Lib\site-packages\qt5_appli -
python qq群消息自动复制,uiautomation
2021-02-23 21:29:59python qq群消息自动复制,uiautomation -
python UI自动化13- 断言方法
2021-04-27 00:35:34在进行自动化测试时,有我们需要对预期结果进行判断。下面介绍几个常用断言的使用方法,可对预期结果进行判断。常用的断言方法:(一)assertEqual 和assertNotEqualself.assertEqual(a,b,msg=msg) #判断a与b是否一致... -
python UI自动化无界面运行
2021-12-28 13:53:46python大家都知道可以使用selenium进行在Windows环境下运行,但每次都会进行弹框运行。但有时我们需要脚本在Linux环境进行运行,一般Linux是无用界面的所有使用之前的脚本会有报错。解决方案如下: 让用例在Linux... -
python3 webUi自动化测试框架
2020-10-27 14:30:33基于Python的webUI自动化测试框架,支持多平台~ 支持xmind文件转为测试用例,目前存在部分问题 支持chrome驱动自动下载 支持用例重跑及自动错误截图 使用antd美化html报告 采用po模式,定位元素与实际操作分离,同... -
Python UI自动化测试实操
2020-05-26 17:56:39本UI 自动化框架主要的实验的目的是:完成了登录页面的自动化登录与打开会员中心的页面这一自动化的过程。 废话不多说,直接上代码截图: 我们首先来看看整个工程的目录结构,这样以便于了解项目的调用关系: ... -
python UI自动化实战记录十一: 总结
2020-12-09 02:24:33首先说说为什么想起来用自动化脚本来实现该项目的自动化。工作还是以手工测试为主,业务驱动型的项目大概就是这样,业务不停地变,不断的迭代。自动化测试实施的先决条件:一 得有时间。如果有时间大部分的项目都... -
Python-SeleniumUI自动化测试框架基于python
2019-08-10 04:28:07基于python的selenium UI自动化测试框架,采用Page Object设计模式进行二次开发,通过对页面对象和测试代码进行分离,并封装了日志输出,浏览器引擎选择,二次封装常用方法 -
Python UI自动化报错汇总2
2021-12-15 13:56:40背景:在写UI自动化的过程中,需要把重复操作的流程提取出来,进行封装,后续再写用例时直接调用。但是在写好后发现运行到封装好的用例时,报如下错误信息。一开始以为自己找的元素有问题,或者参数类型有问题,最后... -
Python实现UI自动化框架 — 基础操作封装
2020-12-20 23:06:57封装Selenium基本操作,让所有页面操作一键调用,让UI自动化框架脱离高成本、低效率时代,将用例的重用性贯彻到极致,让烦人的PO概念变得无所谓,让一个测试小白都能编写并实现自动化。 知识储备前提:熟练python... -
python ui 自动化工具 uiautomation
2019-08-23 15:47:33开始时带着一点点抗拒慢慢地熟悉起来,后来发现python uiautomation 自动化非常有意思,可以做很多你想象不到的事情,特此记录一下。 简介 uiautomation 是在 GitHub 上的一个开源项目项目地址。总体来说,ui... -
python UI/接口 自动化测试 设计模式
2022-03-16 18:36:38page object UI自动化 公共(工具)层 (初始化浏览器 打开 关闭浏览器 ,log日志的记录) 元素定位层 定位各种元素 操作层 操作各种元素(如输入,点击) 用例层 根据具体需求 操作各种元素(如先打开某个页面,再... -
Python UI中的单选和复选
2022-03-09 20:59:13插入分割线 for item in ["PHP", "UI", "JavaScript", "Python", "HTML"]: childMenu.add_checkbutton(label=item) menuBar.add_cascade(label="编程语言", menu=childMenu) wnd["menu"] = menuBar wnd.mainloop() ... -
python自动化UI工具发送QQ消息的实例
2020-09-18 18:07:56今天小编就为大家分享一篇python自动化UI工具发送QQ消息的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
TRunner_autotests:TRunner工具的Python UI自动测试
2021-02-11 17:32:30TRunner_autotests TRunner工具的Python UI自动测试要获取ChromeDriver,请将webdriver文件夹路径添加到PATH中。将LOGIN放在第一行,并将Password放在第二行,将credls.txt放在D:\ -
Python UI开发用哪个好?
2020-12-29 01:43:19开发小型GUI应用程序的话,用Tkinter,wxPython这2个库就行了,如果开发稍微大一点的应用的话,可以考虑PyQt(Qt提供给python的接口),借助Qt Designer(直接拖拽控件),可以快速的开发出比较整洁、美观的界面,下面我... -
UIAutomationClient:Windows的Python UIAutomation的C ++源代码(https-windows source code
2021-03-25 01:17:29该项目为我的python模块Python-UIAutomation-for-Window包装了Windows Gdiplus :: Bitmap。 生成VS2010 \ UIAutomationClient.sln和VS2015 \ UIAutomationClient.sln。 你会得到 UIAutomationClient_VC100_X64....