Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】

Appium: Windows系统桌面应用自动化测试 环境搭建

  • 一、方案调研
    • 1、WinAppDriver
      • (1)简介
  • 二、环境搭建
    • 1、WinAppDriver环境搭建
      • (1)开启开发者选项中的“开发人员模式”
      • (2)windows sdk下载安装
      • (3)WinAppDriver下载安装
    • 2、appium环境搭建
      • (1)appium的官方文档
      • (2)根据官方文档,采用Appium的桌面方式进行安装,而且是一键安装
      • (3)打开如图界面则安装成功
    • 3、使用Appium连接WinAppDriver
      • (1)操作步骤
      • (2)json配置,参数如下
      • (3)Appium桌面版提供的功能
  • 三、简单使用
    • 1、查找元素
      • (1)windows sdk安装路径中,有一个查找元素的组件,叫 inspect.exe,可通过搜索找到,并双击运行。打开如图界面,可以查看元素的名称,和元素支持的点击等操作。
      • (2)inspect.exe查找到的元素的键值对,与python语言使用方法的对应关系,如下表:
    • 2、编写脚本
      • (1)打开pycharm创建虚拟环境,并打开虚拟环境的cmd对话窗口,安装如下:
      • (2)编写脚本,实现连接,代码如下
    • 3、简单实例

一、方案调研

1、windows桌面应用自动化测试方案
(1)WinAppDriver是微软开发的自动化测试工具,而windows是微软开发的,兼容性应该极好。

(2)WinAppDriver也可以是appium的一个自动化框架,而Appium 支持python语言。

(3)Appium 是一个开源工具,用于自动化 iOS 手机、 Android 手机和 Windows 桌面平台上的原生、移动 Web 和混合应用。它把这些系统本身提供的框架包装进一套 API —— WebDriver API 中。WebDriver,即Selenium WebDriver。

(4)Pytest是自动化测试工具,基于Unittest的封装,没那么灵活,但插件丰富。

基于这些原因,windows桌面应用的自动化测试方案采用Python+Appium+WinAppDriver+Pytest

(5)当我写完“Appium: Windows系统桌面应用自动化测试(二)”的时候,我决定弃用上述方案,当然,对于想要坚持的同志,本文依然是入门win桌面应用UI自动化的最佳选择!

1、WinAppDriver

Windows Application Driver (WinAppDriver)是Windows系统上的一个应用程序驱动工具,使用该驱动程序,测试人员能够通过Appium-Python-Client依赖库完成对Windows桌面程序的自动化操作。
对于熟悉Appium的人员来说,可以轻松上手且完成WinApp自动化测试脚本的编写。本节就来介绍WinAppDriver工具。

(1)简介

WinAppDriver是Windows系统上的一个应用程序驱动工具,开源免费。与Selenium工具类似,都是用来实现产品UI自动化测试的一个工具。

WinAppDriver运行时对系统是有要求的,只能运行在Windows10或Windows Server 2016以上系统。如果测试程序兼容性,WinAppDriver很显然不能满足Windows10或Windows Server 2016以下系统的测试。因此使用WinAppDriver实现的自动化测试脚本是有局限性的。

WinAppDriver支持测试UWP、WinForms、WPF、Win32应用程序。

  • UWP:Universal Windows Platform,即Windows通用应用平台,在Windows 10 Mobile/Surface(Windows平板电脑)/PC/Xbox/HoloLens等平台上运行。它并不是为某一个终端而设计,而是可以在所有Windows10设备上运行。

  • WinForms:Windows Forms,是微软的.NET开发框架的图形用户界面部分,该组件通过将现有的Windows API(Win32 API)封装为托管代码提供了对Windows本地(native)组件的访问方式。

  • WPF:Windows Presentation Foundation,是微软推出的基Windows的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。

  • Win32:Classic Windows,是标准windows程序,完全拥有window的特性,可以通过鼠标点击窗口来完成控制。

WinAppDriver支持Appium,测试人员可以借助Appium的客户端Appium-Python-Client来编写自动化测试脚本,无论从语法还是脚本编写的思路构建上,都是相同的,减少了学习成本。

综上所述,WinAppDriver有以下优点:

  • 它是一个开源工具,它使用Web驱动协议。

  • 它是免费的,由微软开发。

  • WinAppDriver可以与Selenium和Appium项目集成在同一种语言中。

  • 可以在WinAppDriver中使用任何编程语言。

  • 可以使用Xpath和其他属性来定位UI元素。

二、环境搭建

初次使用WinAppDriver,借助Appium客户端编写自动化测试脚本需要经过安装WinAppDriver>>开启开发人员模式>>安装Appium客户端>>运行WinAppDriver.exe程序>>编写测试脚本,五个步骤。

1、WinAppDriver环境搭建

(1)开启开发者选项中的“开发人员模式”

WinAppDriver的运行需要开启开发人员模式,否则无法运行。依次进入计算机的设置>>更新和安全>>开发者选项,将【开发人员模式】打开
Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第1张图片

(2)windows sdk下载安装

  • ①下载地址:windows sdk
    Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第2张图片
  • ②选择路径安装即可
    Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第3张图片

(3)WinAppDriver下载安装

  • ①点击下载链接,并任选一个版本,打开如下图,接着根据需求选择合适自己的安装包下载即可

下载地址:WinAppDriver
Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第4张图片

  • ②一键安装
    Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第5张图片
  • ③搜索一下安装路径

如图,默认路径为:C:\Program Files\Windows Application Driver
安装完成会有一个WinAppDriver.exe程序文件,这便是WinAppDriver的启动文件。
Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第6张图片

  • ④双击打开出现以下画面则安装成功
    进入WinAppDriver的安装路径,以管理身份运行WinAppDriver.exe程序。启动成功后会弹出一个命令行窗口,提示“Windows Application Driver listening for requests at: http://127.0.0.1:4723/”,Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第7张图片
    WinAppDriver启动后默认会IP地址和端口号为127.0.0.1:4723上的请求,在使用时我们可以配置监听的IP地址和端口号,示例如下:
WinAppDriver.exe 4727
WinAppDriver.exe 10.0.0.10 4725
WinAppDriver.exe 10.0.0.10 4723/wd/hub

WinAppDriver.exe所在路径下,执行命令WinAppDriver.exe 4727即可完成
Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第8张图片

2、appium环境搭建

(1)appium的官方文档

http://appium.io/docs/cn/about-appium/intro/

(2)根据官方文档,采用Appium的桌面方式进行安装,而且是一键安装

下载地址:https://github.com/appium/appium-desktop/releases
Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第9张图片
Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第10张图片

(3)打开如图界面则安装成功

Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第11张图片

3、使用Appium连接WinAppDriver

(1)操作步骤

Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第12张图片
Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第13张图片
Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第14张图片

Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第15张图片

(2)json配置,参数如下

{
        "app": "C:\\Program Files\\XMind\\XMind.exe",
        "deviceName": "WindowsPC",
        "platformName": "Windows"
}

(3)Appium桌面版提供的功能

  • ①可作为客户端或服务器使用

  • ②提供元素查找功能

  • ③提供脚本录制功能

  • ④其他

三、简单使用

1、查找元素

(1)windows sdk安装路径中,有一个查找元素的组件,叫 inspect.exe,可通过搜索找到,并双击运行。打开如图界面,可以查看元素的名称,和元素支持的点击等操作。

也可能没有,附上下载链接 inspect-exe
Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第16张图片

(2)inspect.exe查找到的元素的键值对,与python语言使用方法的对应关系,如下表:

inspect.exe查找到的键值对 python查找元素的方法
AutomationId driver.find_element_by_accessibility_id()
ClassName driver.find_element_by_class_name()
RuntimeId (decimal) driver.find_element_by_id()
Name driver.find_element_by_name()
LocalizedControlType (upper camel case) driver.find_element_by_tag_name()
Any driver.find_element_by_xpath()

2、编写脚本

前面,我们已经使用Appium作为客户端成功连接了服务端WinAppDriver;现在,我们通过python脚本连接WinAppDriver。

(1)打开pycharm创建虚拟环境,并打开虚拟环境的cmd对话窗口,安装如下:

pip install Appium-Python-Client Selenium
Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第17张图片

(2)编写脚本,实现连接,代码如下

 from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait


# appium服务监听地址(WinAppDriver地址)
server='http://127.0.0.1:4723'
# app启动参数
desired_caps={
       "app": "C:\\Program Files\\XMind\\XMind.exe",
       "deviceName": "WindowsPC",
       "platformName": "Windows"
}
# 连接
driver = webdriver.Remote(server, desired_caps)
wait = WebDriverWait(driver, 30)

appium默认监听端口为4723 WinAppDriver监听端口也为4723 会存在冲突所有一般会自定义了WinAppDriver端口
Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第18张图片

# appium服务监听地址(WinAppDriver地址)
修改server='http://127.0.0.1:4727'

Appium: Windows系统桌面应用自动化测试(一) 【环境搭建】_第19张图片

3、简单实例

例如编写一个简单的脚本,启动写字板应用,然后点击最大化按钮,接着点击关闭按钮关闭写字板应用。代码如下:

# winApp_demo.py
import time

from appium import webdriver
from selenium.webdriver.common.by import By

# 添加启动参数
desired_caps = {}
desired_caps['app'] = r"C:\Program Files\Windows NT\Accessories\wordpad.exe"
# 客户端连接 Server,启动 Session 会话
driver = webdriver.Remote(command_executor='http://127.0.0.1:4723', desired_capabilities=desired_caps)
time.sleep(3)

# 定位 最大化 按钮,并点击
driver.find_element(by=By.NAME, value="最大化").click()
time.sleep(1)
# 定位 关闭 按钮,并点击
driver.find_element(by=By.NAME, value="关闭").click()
# 关闭会话
driver.quit()

运行脚本后,会观察到计算机上启动了写字板应用,然后最大化,接着就被关闭。

  • 上面代码中在启动参数中添加了app参数,指明要启动程序;

  • 定位元素使用的是Selenium提供的定位方式,通过元素的NAME属性进行定位,然后对元素点击操作;

  • 最后使用quit()方法结束会话。

整体语法与之前讲解的Web测试自动化和APP测试自动化是相同的,因此很容易掌握。

注意:使用WinAppDriver进行自动化测试时,由于与Appium、Selenium之间的兼容性处理不是很好,因此会许多意想不到的问题。

例如使用高版本的Selenium和Python时,在点击元素时可能会出现“‘dict’ object has no attribute ‘click’”异常,此时就需要将Selenium 版本由4降到3,又或者将Python版本降级到3.6解决。

因为正常定位到的元素是WebElement对象,而非字典。但相信随着这三个工具不断地更新迭代,这些问题都会得到解决。在此笔者WinAppDriver使用的版本是1.2,Appium-Python-Client版本是2.0.0a0,Selenium版本是4.0.0a1。

你可能感兴趣的:(UI自动化,appium,windows)