Windows客户端自动化测试方案

一、 WinAppDriver+Selenium+Appium

1、 简介

    WinAppDriver 是一项服务,支持在 Windows 应用程序上执行 Selenium-like UI测试自动化。此服务支持在Windows 10 PC上测试 UWP、WinForms、WPF 和 Win32应用程序。

2、 安装和运行WinAppDriver

3、 安装 Selenium 和 Appium

python -m pip install selenium==3.5.0 
python -m pip install appium==1.3.0

    建议安装 selenium 3.5.0 版本和 appium 1.3.0 版本

4、 简单用法

import unittest
from appium import webdriver


class SimpleCalculatorTests(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        desired_caps = {}
        desired_caps["app"] = "Microsoft.WindowsCalculator_8wekyb3d8bbwe!App"
        self.driver = webdriver.Remote(
            command_executor="http://127.0.0.1:4723", desired_capabilities=desired_caps
        )

    @classmethod
    def tearDownClass(self):
        self.driver.quit()

    def getResults(self):
        """获取结果值"""
        displaytext = self.driver.find_element_by_accessibility_id(
            "CalculatorResults"
        ).text
        displaytext = displaytext.strip("显示为 ")
        displaytext = displaytext.rstrip(" ")
        displaytext = displaytext.lstrip(" ")
        return displaytext

    def testInitialize(self):
        """测试初始化"""
        self.driver.find_element_by_name("清除").click()
        self.driver.find_element_by_name("七").click()
        self.assertEqual(self.getResults(), "7")
        self.driver.find_element_by_name("清除").click()

    def testAddition(self):
        """测试加法"""
        self.driver.find_element_by_name("一").click()
        self.driver.find_element_by_name("加").click()
        self.driver.find_element_by_name("七").click()
        self.driver.find_element_by_name("等于").click()
        self.assertEqual(self.getResults(), "8")

    def testCombination(self):
        """测试混合运算"""
        self.driver.find_element_by_name("七").click()
        self.driver.find_element_by_name("乘以").click()
        self.driver.find_element_by_name("九").click()
        self.driver.find_element_by_name("加").click()
        self.driver.find_element_by_name("一").click()
        self.driver.find_element_by_name("等于").click()
        self.driver.find_element_by_name("除以").click()
        self.driver.find_element_by_name("八").click()
        self.driver.find_element_by_name("等于").click()
        self.assertEqual(self.getResults(), "8")

    def testDivision(self):
        """测试除法"""
        self.driver.find_element_by_name("八").click()
        self.driver.find_element_by_name("八").click()
        self.driver.find_element_by_name("除以").click()
        self.driver.find_element_by_name("一").click()
        self.driver.find_element_by_name("一").click()
        self.driver.find_element_by_name("等于").click()
        self.assertEqual(self.getResults(), "8")

    def testMultiplication(self):
        """测试乘法"""
        self.driver.find_element_by_name("九").click()
        self.driver.find_element_by_name("乘以").click()
        self.driver.find_element_by_name("九").click()
        self.driver.find_element_by_name("等于").click()
        self.assertEqual(self.getResults(), "81")

    def testSubtraction(self):
        """测试减法"""
        self.driver.find_element_by_name("九").click()
        self.driver.find_element_by_name("减").click()
        self.driver.find_element_by_name("一").click()
        self.driver.find_element_by_name("等于").click()
        self.assertEqual(self.getResults(), "8")


if __name__ == "__main__":
    suite = unittest.TestLoader().loadTestsFromTestCase(SimpleCalculatorTests)
    unittest.TextTestRunner(verbosity=2).run(suite)

5、 文档

    WinAppDriver Docs

二、 pywinauto

1、 简介

    pywinauto是一组Python模块,用于自动操作 Windows GUI。 既支持将鼠标和键盘操作发送到对话框和控件的简单操作,也支持更复杂的操作,例如获取文本数据。支持两种类型的后端程序 Win32API(MFC、VB6,、VCL、简单的WinForms控件、 大多数旧的遗留应用程序) 和 MS UI Automation (WinForms, WPF, Store apps, Qt5, browsers)

2、 安装

python -m pip install pywinauto

3、 简单用法

from pywinauto.application import Application

app = Application(backend="uia").start("Notepad.exe")
app["无标题 - 记事本"].draw_outline()
app["无标题 - 记事本"].menu_select("编辑->替换...")
app["无标题 - 记事本"]["取消"].click()
app["无标题 - 记事本"].Edit.type_keys("Hi from Python interactive prompt %s" % str(dir()), with_spaces = True)
app["无标题 - 记事本"].menu_select("文件->退出")
app["无标题 - 记事本"]["不保存"].click()

4、 文档

    pywinauto 0.6.8 documentation

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容