pywinauto获取控件(python+pywinauto写自动化测试脚本时,怎么获取windows软件页面元素按钮啊刚开始用这个不太明白)
本文目录
- python+pywinauto写自动化测试脚本时,怎么获取windows软件页面元素按钮啊刚开始用这个不太明白
- Python2.7:的pywinauto(Windows界面测试库)如何获取文本框的内容
- 使用pywinauto如何 获取systreeview32内的item(python语言)
- 熟悉python的进!Windows下的UI自动化类库pywinauto如何获取消息框的内容
- python怎么判断windows下的某一个窗口是否当前正在操作的
- python pywinauto能控制任意的.exe进程吗
python+pywinauto写自动化测试脚本时,怎么获取windows软件页面元素按钮啊刚开始用这个不太明白
Win32 APIbackend=win32 - 一个默认后端现在MFC,VB6,VCL,简单的WinForms控件和大多数旧的旧应用程序MS UI自动化backend=uiaWinForms,WPF,Store应用程序,Qt,浏览器
Python2.7:的pywinauto(Windows界面测试库)如何获取文本框的内容
你这是弄自动化?要输出到Python的哪个控制台? 是命令提示符?你是在命令提示符下执行脚本的吗?如:python xxx.py
使用pywinauto如何 获取systreeview32内的item(python语言)
①SysListView32#define TEXTSIZE 256void Func(){HWND hYF; //SysListView32的父窗口句柄HWND hLV = FindWindowEx(hYF, NULL, _T("SysListView32"), _T(""));DWORD PID;HWND hWnd; //hWnd 应用程序的句柄GetWindowThreadProcessId(hWnd, &PID);HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, PID);TCHAR buf;TCHAR lpClassName;while(1 && (NULL != hLV)){GetClassName(hLV, (LPWSTR)lpClassName, TEXTSIZE-1); //获得窗口类名CString className(lpClassName);if (className != _T("SysListView32"))continue;CListView* pListView = (CListView*)CWnd::FromHandle(hLV);CListCtrl& listCtrl = pListView-》GetListCtrl();LVCOLUMN* plvcolumn =(LVCOLUMN*)VirtualAllocEx(hProcess, NULL, sizeof(LVCOLUMN), MEM_COMMIT, PAGE_READWRITE);TCHAR* pColumnTitle = (TCHAR*)VirtualAllocEx(hProcess, NULL, TEXTSIZE, MEM_COMMIT, PAGE_READWRITE);LVCOLUMN lvcol;lvcol.pszText = pColumnTitle;lvcol.cchTextMax = TEXTSIZE;lvcol.mask = LVCF_TEXT;WriteProcessMemory(hProcess, plvcolumn, &lvcol, sizeof(LVCOLUMN), NULL);listCtrl.GetColumn(0, plvcolumn);ReadProcessMemory(hProcess, pColumnTitle, buf, TEXTSIZE, NULL);VirtualFreeEx(hProcess, plvcolumn, 0, MEM_RELEASE);VirtualFreeEx(hProcess, pColumnTitle, 0, MEM_RELEASE);CString lvcolTitle(&buf);if (lvcolTitle == _T("图像名称")){break;}hLV = ::GetWindow(hLV, GW_HWNDNEXT);}BOOL bRet = TRUE;CListView* pListView = (CListView*)CWnd::FromHandle(hLV);CListCtrl& listCtrl = pListView-》GetListCtrl();int nCount = ListView_GetItemCount(hLV);for (int i = 0; i 《 nCount; ++i){LVITEM* plvitem =(LVITEM*)VirtualAllocEx(hProcess, NULL, sizeof(LVITEM), MEM_COMMIT, PAGE_READWRITE);TCHAR* pItemTitle = (TCHAR*)VirtualAllocEx(hProcess, NULL, TEXTSIZE, MEM_COMMIT, PAGE_READWRITE);LV_ITEM lvi;lvi.iSubItem = 1;lvi.pszText = pItemTitle;lvi.cchTextMax = TEXTSIZE;WriteProcessMemory(hProcess, plvitem, &lvi, sizeof(LVITEM), NULL);SendMessage(hLV, LVM_GETITEMTEXT, i, (LPARAM)plvitem);ReadProcessMemory(hProcess, pItemTitle, buf, TEXTSIZE, NULL);VirtualFreeEx(hProcess, plvitem, 0, MEM_RELEASE);VirtualFreeEx(hProcess, pItemTitle, 0, MEM_RELEASE);CString strText(&buf);if (0 == strText.CompareNoCase(_T("缺图"))){//XXXXXXXXXXXXXXXXXXX}}};②SysTreeView32HTREEITEM GetNextTreeItem(HWND hWnd, HTREEITEM hCurTreeItem){if (NULL == hWnd || NULL == hCurTreeItem)return NULL;HTREEITEM hResultItem = TreeView_GetNextItem(hWnd, hCurTreeItem, TVGN_CHILD);if (NULL == hResultItem){hResultItem = TreeView_GetNextItem(hWnd, hCurTreeItem, TVGN_NEXT);}if (NULL == hResultItem){HTREEITEM hParentItem = TreeView_GetNextItem(hWnd, hCurTreeItem, TVGN_PARENT);hResultItem = TreeView_GetNextItem(hWnd, hParentItem, TVGN_NEXT);}return hResultItem;}void Func(){//获取树控件的内容HWND hParent; //SysTreeView32父窗口句柄HWND hTree = FindWindowEx(hParent, NULL, _T("SysTreeView32"), _T(""));HWND hWnd; //主程序句柄DWORD PID;GetWindowThreadProcessId(hWnd, &PID);HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, PID);ASSERT( NULL != hProcess);UINT vItemCount = TreeView_GetCount(hTree);HTREEITEM hTreeItem = TreeView_GetRoot(hTree);TCHAR buf;std::vector《CString》 vecItemText;CTreeView* pTreeView = (CTreeView*)CWnd::FromHandle(hTree);CTreeCtrl& treeCtrl = pTreeView-》GetTreeCtrl();for (int i = 0; i 《 vItemCount; i++){LPTV_ITEM pTreeItem =(LPTV_ITEM)VirtualAllocEx(hProcess, NULL, sizeof(TV_ITEM), MEM_COMMIT, PAGE_READWRITE);TCHAR* pItemText = (TCHAR*)VirtualAllocEx(hProcess, NULL, MAXLENGTH, MEM_COMMIT, PAGE_READWRITE);TV_ITEM item;item.mask = TVIF_TEXT;item.hItem = hTreeItem;item.pszText = pItemText;item.cchTextMax = MAXLENGTH;WriteProcessMemory(hProcess, pTreeItem, &item, sizeof(TV_ITEM), NULL);treeCtrl.GetItem(pTreeItem);ReadProcessMemory(hProcess, pItemText, buf, MAXLENGTH, NULL);VirtualFreeEx(hProcess, pTreeItem, 0, MEM_RELEASE);VirtualFreeEx(hProcess, pItemText, 0, MEM_RELEASE);if (TreeView_GetRoot(hTree) != hTreeItem){CString sTreeItemText(buf);vecItemText.push_back(sTreeItemText);}hTreeItem = GetNextTreeItem(hTree, hTreeItem);}for (auto it = vecItemText.begin(); it != vecItemText.end(); ++it){//可根据Item内容判断转出的pdf是否可用}}
熟悉python的进!Windows下的UI自动化类库pywinauto如何获取消息框的内容
一般的Window下弹出的消息框,内容可以用 Ctrl+X 或 Ctr+C 放到到剪切板,试一下代码实现这两个功能可不可以放到剪切板。
python怎么判断windows下的某一个窗口是否当前正在操作的
获取这个指定窗口的HANDLE,再根据这个HANDLE得到窗口的状态,大概就这个思路。Python没用过,其它语言倒是处理过,正常获取到某个程序主窗体没问题
python pywinauto能控制任意的.exe进程吗
可以Pywinauto是基于Python开发的,用于自动化测试的脚本模块,主要操作于Windows标准图形界面。它可以允许你很容易的发送鼠标、键盘动作给Windows的对话框和控件。 其中,最主要功能为对windows标准控件的一系列动作可编程处理。包括对窗口的指定、鼠标或键盘操作、获得控件属性等等。程序的开始为对所需应用的启 动或连接。获得程序连接后,pywinauto通过窗口的名称、类名、是否可见等属性寻找匹配的窗口,进而通过类似方法寻找用户所需的控件,并获得相应的 句柄。之后,用户可通过易理解的编程方式对指定控件进行相关操作的编程,包括鼠标点击、键盘输入、判断控件间关系、获取控件属性等。
更多文章:
vb中activex控件是什么意思(ActiveX控件是什么)
2024年7月31日 17:05
for循环中i++与++i的区别(C语言中的i++与++i的使用区别举例说明)
2024年8月2日 10:50
assertionerror python怎么解决(python错误)
2024年8月25日 13:25
mysql密码输入正确进不去(用户名密码都正确,就是连不上mysql是怎么回事)
2024年7月24日 11:07
模块电源连接器(CPU电源和I/O模块电源 伏在电源有什么区别拜托各位了 3Q)
2024年7月27日 02:25
使用eclipse做一个完整系统(在eclipse编好的代码如何编译成软件或者系统)
2024年7月24日 08:44
css样式基础知识(请教一个关于CSS基础知识的问题!懂的麻烦帮帮我!我自学CSS出现疑问了!)
2024年7月2日 13:02
百度分词工具(SEM里面分词到底该如何分,有什么好的分词工具吗)
2023年9月3日 11:40
excel常用快捷键大全 一览表(EXCEL表格有哪些快捷键)
2024年5月17日 23:38
js随机数不重复(JavaScript问题:一个有一百个随机数字的数组中(可能有重复数字),随机抽取十个,且这十个数字不重复)
2024年7月24日 20:00
python 时间格式转换(python中,怎么把字符串转换为日期格式)
2024年6月26日 14:51
web文件夹可以删除吗(我的笔记本计算机里面出现一个叫做“web的文件夹”删也删不掉打也打不开怎么办啊)
2024年7月8日 21:05
scanf怎么读字符串(scanf 怎么格式读取这样一个字符)
2024年7月23日 04:52
python float函数(调用配置函数float()可以将字符串’234’转换为浮点数正确吗)
2024年7月21日 12:09