Appium: Windows系统桌面应用自动化测试(二)

这篇具有很好参考价值的文章主要介绍了Appium: Windows系统桌面应用自动化测试(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、关于自动化过程中,打开了应用,但获取不到操作句柄的问题

1、问题描述

(1)下图是通过python脚本连接的不同应用

(2)应用一:有sessionId,说明会话正常,可通过句柄操作应用

(3)应用二:报500错误

(4)报错日志

HTTP/1.1 500 Internal Error
Content-Length: 199
Content-Type: application/json

{“status”:13,“value”:{“error”:“unknown error”,“message”:“Failed to locate opened application window with appId: C:\Program Files (x86)\IDMVS\Applications\Win64\IDMVS.exe, and processId: 39628”}}
Appium: Windows系统桌面应用自动化测试(二)

2、问题分析

(1)网络拓扑图

①应用、WinAppDriver、python脚本都在同一台PC上,他们的关系如下:

python脚本(客户端)《》WinAppDriver(服务端)《》应用

②以打开应用为例,首先客户端向服务端发送启动应用的请求,然后服务端打开应用,接着应用给服务端反馈情况,最后服务端给客户端操作句柄

③问题的原因是什么呢?是服务端报了500错误,接着反馈给客户端转发信息如下:

selenium.common.exceptions.WebDriverException: Message: Failed to locate opened application window with appId: C:\Program Files (x86)\IDMVS\Applications\Win64\IDMVS.exe, and processId: 27104

④即打开了应用,但无法定位到该应用

(2)原因分析

①可能是应用拒绝了向服务器反馈,服务器等不到结果而报500错误

②短时间内,服务器捕获不到应用反馈,就已经结束了会话

③服务端没有权限捕获该应用

④软件路径相关

3、问题解决

①实验一:打开该软件同一目录下的软件,获取句柄正常,认为与软件路径无关

②实验二:管理员方式运行服务端,获取失败,认为与服务端权限无关

③实验三:通过python脚本延长超时等待,获取失败,认为与应用反馈时间无关

(PS:剩下的怀疑对象是应用本身,这个就有点束手无策了。只能继续做实验,尝试排查)

④实验四:以管理员身份运行appium作为客户端,尝试解决,报错信息与python脚本一致
Appium: Windows系统桌面应用自动化测试(二)
⑤实验五:使用appium作为客户端通过改变配置参数进行解决,再次失败

配置参数文档见如下链接:
https://github.com/appium/appium-windows-driver#windowsdriver-specific-capabilities
⑥实验六:重新安装,甚至更换X86的WinAppDriver,再运行,均失败

二、尝试回归问题本身,去解决问题

1、目标应用日志

重新运行脚本,没有生成新的日志,因此无法通过其得到有用信息
Appium: Windows系统桌面应用自动化测试(二)
2、通过查看win系统自带的系统日志,尝试解决

操作脚本,还是没有日志生成

Appium: Windows系统桌面应用自动化测试(二)
Appium: Windows系统桌面应用自动化测试(二)
Appium: Windows系统桌面应用自动化测试(二)

3、查看WinAppDriver日志

(1)当只给app参数的时候,报如下错误

{“capabilities”: {“alwaysMatch”: {“appium:app”: “C:\Program Files (x86)\IDMVS\Applications\Win64\IDMVS.exe”, “appium:deviceName”: “WindowsPC”, “platformName”: “Windows”}, “firstMatch”: [{}]}, “desiredCapabilities”: {“app”: “C:\Program Files (x86)\IDMVS\Applications\Win64\IDMVS.exe”, “deviceName”: “WindowsPC”, “platformName”: “Windows”}}
HTTP/1.1 500 Internal Error
Content-Length: 199
Content-Type: application/json

{“status”:13,“value”:{“error”:“unknown error”,“message”:“Failed to locate opened application window with appId: C:\Program Files (x86)\IDMVS\Applications\Win64\IDMVS.exe, and processId: 27968”}}

(2)当加上参数 “ms:waitForAppLaunch”:5, 的时候,报如下错误

①有时候报如下错误

{“capabilities”: {“alwaysMatch”: {“appium:app”: “C:\Program Files (x86)\IDMVS\Applications\Win64\IDMVS.exe”, “ms:waitForAppLaunch”: 5}, “firstMatch”: [{}]}, “desiredCapabilities”: {“app”: “C:\Program Files (x86)\IDMVS\Applications\Win64\IDMVS.exe”, “ms:waitForAppLaunch”: 5}}
HTTP/1.1 400 Bad Request
Content-Length: 131
Content-Type: application/json

{“status”:23,“value”:{“error”:“no such window”,“message”:“Cannot find active window specified by capabilities: appTopLevelWindow”}}

②有时候报的错误跟(1)一样

(3)新增"appArguments"参数报如下错误

{“capabilities”: {“alwaysMatch”: {“appium:app”: “C:\Program Files (x86)\IDMVS\Applications\Win64\IDMVS.exe”, “ms:waitForAppLaunch”: 5, “appium:appArguments”: “C:\Users\yeqinfang\Desktop\\u4e34\u65f6\u6587\u4ef6\log.txt”}, “firstMatch”: [{}]}, “desiredCapabilities”: {“app”: “C:\Program Files (x86)\IDMVS\Applications\Win64\IDMVS.exe”, “ms:waitForAppLaunch”: 5, “appArguments”: “C:\Users\yeqinfang\Desktop\\u4e34\u65f6\u6587\u4ef6\log.txt”}}
HTTP/1.1 500 Internal Error
Content-Length: 199
Content-Type: application/json

{“status”:13,“value”:{“error”:“unknown error”,“message”:“Failed to locate opened application window with appId: C:\Program Files (x86)\IDMVS\Applications\Win64\IDMVS.exe, and processId: 28380”}}

(4)增加官方指定的参数createSessionTimeout,也没啥用,报的错误跟(1)一样

Appium: Windows系统桌面应用自动化测试(二)

3、有没有可能该应用是winappdriver不支持的应用?

①目前我们使用的驱动支持的应用

UWP - Universal Windows Platform

WinForms - Windows Forms

WPF - Windows Presentation Foundation

Win32 - Classic Windows

②查看该应用类型

没有相关方法,搞不定

4、手动打开和WinAppDriver打开的区别

手动打开
Appium: Windows系统桌面应用自动化测试(二)
WinAppDriver打开
Appium: Windows系统桌面应用自动化测试(二)

(1)这个发现说明什么呢?

说明程序没有被正确打开!那如何使用脚本正确打开呢?

  • ①实验一:直接通过python工程(虚拟环境)的"os.system()"模块打开程序,竟然没有正确打开!

  • ②实验二:使用系统python环境执行"os.system()"打开程序,依旧没有正确打开!

  • ③实验三:通过cmd指令直接运行exe程序,正确打开!

(2)怀疑跟工作目录有关

添加“appWorkingDir”参数连接应用,发现也能正确打开了,但是依旧获取句柄失败!

三、方案总结

  • 1、原因一:上述情况表明,某些原因下,连接引用会异常

  • 2、原因二:appium其实对winappdriver的支持不够好,2.0.0版本以后就不能使用了,要用1.3.0或以下版本才会有较好的支持

  • 3、原因三:winappdriver提供的接口实际上并不算丰富,这可能也是被appium放弃的原因

  • 4、原因四:python中有了更好的替代方案,那就是 pywinauto 模块!

pywinauto 和 WinAppDriver 都能很好的完成 PC 端的自动化,但是由于 WinAppDriver 支持 Appium,在脚本语法简洁性方面可能更有优,能满足大部分的pc端自动化需求,如有部分pc端自动化无法满足可考虑后续再引入pywinauto 模块文章来源地址https://www.toymoban.com/news/detail-514691.html

到了这里,关于Appium: Windows系统桌面应用自动化测试(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#【自动化测试】对Windows桌面应用程序进行UI自动化测试

    本文简述如何利用appium对Windows桌面应用程序进行UI自动化测试。 所谓UI自动化测试,就是 模拟一个用户,对应用程序的UI进行操作,以完成特定场景的功能性集成测试 。 要对Windows桌面应用程序进行UI自动化测试,目前可选的技术主要是两种: VS自带的CodedUI Test和Appium+WinApp

    2024年01月15日
    浏览(61)
  • Airtest:Windows桌面应用自动化测试【AirtestIDE功能】

    Airtest辅助窗(左上):这里主要是用来生成airtest框架中的代码的。 Poco辅助窗(左下):这个主要是用来抓取元素信息的,类似于Chrome F12查看Web元素、Appium Inspector查看App元素,并且可以生成Poco框架代码。 脚本编辑窗(中上):用来编写自动化代码,和所有IDE的相关功能类似。 Log查

    2024年02月10日
    浏览(40)
  • appium桌面版本以及一些自动化测试方方封装

    标签(空格分隔): appium_desktop 一 appium_desktop_v1.2.6 1.appium_desktop在github上最新下载地址:appium桌面版本地址 2.一路傻瓜式安装就好了: 3.然后点击搜索按钮(右上角) 三 inspector 1.元素定位探测器,在Desired Capabilitis下表格输入参数配置信息: 2.参数配置好之后可以保存下,连

    2023年04月13日
    浏览(72)
  • appium脚本执行Android_UI自动化,app总是闪退回桌面

    1. 使用工具 appium python pycharm 2. 被测对象及设备 测试真机上的app 3. 遇到的问题 批量执行测试用例,执行到部分用例某一步骤时,app会自动退回手机桌面,并开始执行下一条用例,因上一条故障导致下一条用例找不到页面元素而执行失败(每次失败位置是随机的)。所有用例

    2024年02月16日
    浏览(38)
  • Jenkins集成appium自动化测试(Windows篇)

    自动化测试脚本绝大部分用于回归测试,这就需要制定执行策略,如每天、代码更新后、项目上线前定时执行,才能达到最好的效果,这时就需要进行Jenkins集成。 不像web UI自动化测试可以使用无痕浏览器做到无界面,APP UI自动化需要用到真机或模拟器,在完全的linux环境下做

    2024年02月13日
    浏览(37)
  • Appium,多应用程序平台的 UI 自动化

    Appium是一个开源的移动应用程序自动化测试工具,可以用于跨平台的UI自动化,包括iOS、Android、Web和Windows应用程序。它基于WebDriver协议,支持多种编程语言,如Java、Python、Ruby,Javascript、C#等。 Appium的设计理念是“一次编写,多次运行”。它允许开发人员使用相同的测试脚本

    2024年01月25日
    浏览(63)
  • APP自动化测试(2)-通过appium打开手机的应用

    目录 一、appium的Capabilities配置及Appium Inspector安装 1.1安装Appium Inspector 1.2Capabilities配置 二、获取手机以及app的信息 2.1获取连接设计的配置名称 2.1.1连接手机 2.1.2获取设备名称  2.2利用adb获取日志找到appPackage和appActivity   三、Start Session 3.1 安装appium-doctor 3.2解决appium-doctor查出

    2024年02月08日
    浏览(48)
  • python控制Windows桌面程序自动化模块uiautomation

    github仓库地址:GitHub - yinkaisheng/Python-UIAutomation-for-Windows: (Donot use 3.7.6,3.8.1):snake:Python 3 wrapper of Microsoft UIAutomation. Support UIAutomation for MFC, WindowsForm, WPF, Modern UI(Metro UI), Qt, IE, Firefox, Chrome ...   uiautomation封装了微软UIAutomation API,支持自动化Win32,MFC,WPF,Modern UI(Metro UI), Qt, IE, F

    2024年02月04日
    浏览(42)
  • 『App自动化测试之Appium应用篇』| 继承于selenium常用的元素定位方法有哪些?如何使用?

    在了解元素等位前,我们先了解下 app 的一些类型,只有了解这些 app 的类型才能针对性的选择元素定位方法; 因为不同类型的app的定位方式可能存在差异性; 我们了解到 APP 可以分为原生 APP 、 Web APP 、混合 APP 。 而原生 APP 是基于 Android 或 iOS 平台官方的语言、类库、工具

    2024年02月03日
    浏览(48)
  • 『App自动化测试之Appium应用篇』| 元素定位工具uiautomatorviewer从简介、特点、启动到使用的完整过程

    之前文章说明了 Appium Inspector 的定位使用方法; uiautomatorviewer 是另一种定位工具; uiautomatorviewer 是 android-sdk 自带的元素定位工具; 它是通过截屏分析 XML 布局文件方式,来提供控件信息的查看服务。 uiautomatorviewer 和 Appium Inspector 有着明显的区别; Appium Inspector 功能相对比较

    2024年02月03日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包