文章目录
1、_ctypes.COMError: (-2147024891, ‘拒绝访问。’, (None, None, None, 0, None))
报错场景:
一条def用例中存在2个用例数据,执行完毕第一条后,关闭应用程序窗口。无法自动执行第二条用例数据。
原解决方案:
进入目标页面前,判断页面控件是否存在。若不存在,则再次启动应用程序。
**问题点:**因为定位的是子控件,故会出现子控件找不到的报错。+_ctypes.COMError: (-2147024891, ‘拒绝访问。’, (None, None, None, 0, None))
def to_createPersonalProject(self):
self.create_project = self.get_win().GroupControl(Name="新建项目")
if not self.create_project.Exists(0, 0):
if not self.get_win().Exists(0, 0):
subprocess.Popen(config.winPath)
self._win.TextControl(Name="个人项目").GetParentControl().Click()
return self.create_project
报错内容:
2022-07-01 16:11:32,059 - root - INFO test_createPersonalPrject_002开始执行
2022-07-01 16:11:32,060 - root - ERROR test_createPersonalPrject_002执行失败
2022-07-01 16:11:32,060 - root - ERROR (-2147024891, '拒绝访问。', (None, None, None, 0, None))
2022-07-01 16:11:32,062 - root - ERROR Traceback (most recent call last):
File "E:\metabuild_pc\utils\handle_log.py", line 48, in inner_func
func(*args, **kwargs)
File "E:\metabuild_pc\testCases\test_createPersonalProject.py", line 60, in test_createPersonalPrject_002
self.create_project = CreatePersonalProject()
File "E:\metabuild_pc\pageObjects\createPersonalProject.py", line 9, in __init__
self.create_project = self.a.to_createPersonalProject()
File "E:\metabuild_pc\common\baseInfo.py", line 42, in to_createPersonalProject
if not self.create_project.Exists(0, 0):
File "D:\python3.6.8\lib\site-packages\uiautomation\uiautomation.py", line 6418, in Exists
control = FindControl(self.searchFromControl, self._CompareFunction, self.searchDepth, False, self.foundIndex)
File "D:\python3.6.8\lib\site-packages\uiautomation\uiautomation.py", line 8353, in FindControl
for child, depth in WalkControl(control, findFromSelf, maxDepth):
File "D:\python3.6.8\lib\site-packages\uiautomation\uiautomation.py", line 8225, in WalkControl
child = control.GetFirstChildControl()
File "D:\python3.6.8\lib\site-packages\uiautomation\uiautomation.py", line 6287, in GetFirstChildControl
ele = _AutomationClient.instance().ViewWalker.GetFirstChildElement(self.Element)
_ctypes.COMError: (-2147024891, '拒绝访问。', (None, None, None, 0, None))
现解决办法:
调整判断位置,若未找到父级程序,直接重新开启应用程序。
def to_createPersonalProject(self):
self.create_project = self.get_win().GroupControl(Name="新建项目")
if not self.get_win().Exists(0, 0):
subprocess.Popen(config.winPath)
if not self.create_project.Exists(0, 0):
self._win.TextControl(Name="个人项目").GetParentControl().Click()
return self.create_project
2、pytest报告-中文未正确显示
问题:
解决办法:
# conftest中添加如下内容
def pytest_collection_modifyitems(items) -> None:
"""控制台用例标题显示为中文"""
for item in items:
item.name = item.name.encode("utf-8").decode("unicode-escape")
item._nodeid = item._nodeid.encode("utf-8").decode("unicode-escape")
滚动条下拉判断
# 遍历时,最后一个元素坐标底部大于窗口坐标底部,则按下PageDown按钮
rect=tree.BoundingRectangle
if item.BoundingRectangle.bottom>=rect.bottom:
auto.SendKeys('{PageDown}',waitTime=0.1)
按下F12,停止采集数据
if auto.IsKeysPressed(auto.Key.VK_F12):
print("F12已被按下,停止数据采集")
break