【UIautomation】WindowsGUI自动化测试搭建-报错记录


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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值