Windows客戶端自動(dòng)化測(cè)試方案

一、 WinAppDriver+Selenium+Appium

1、 簡(jiǎn)介

????WinAppDriver 是一項(xiàng)服務(wù),支持在 Windows 應(yīng)用程序上執(zhí)行 Selenium-like UI測(cè)試自動(dòng)化。此服務(wù)支持在Windows 10 PC上測(cè)試 UWP、WinForms、WPF 和 Win32應(yīng)用程序。

2、 安裝和運(yùn)行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、 簡(jiǎn)單用法

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):
        """獲取結(jié)果值"""
        displaytext = self.driver.find_element_by_accessibility_id(
            "CalculatorResults"
        ).text
        displaytext = displaytext.strip("顯示為 ")
        displaytext = displaytext.rstrip(" ")
        displaytext = displaytext.lstrip(" ")
        return displaytext

    def testInitialize(self):
        """測(cè)試初始化"""
        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):
        """測(cè)試加法"""
        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):
        """測(cè)試混合運(yùn)算"""
        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):
        """測(cè)試除法"""
        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):
        """測(cè)試乘法"""
        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):
        """測(cè)試減法"""
        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、 簡(jiǎn)介

????pywinauto是一組Python模塊,用于自動(dòng)操作 Windows GUI。 既支持將鼠標(biāo)和鍵盤操作發(fā)送到對(duì)話框和控件的簡(jiǎn)單操作,也支持更復(fù)雜的操作,例如獲取文本數(shù)據(jù)。支持兩種類型的后端程序 Win32API(MFC、VB6,、VCL、簡(jiǎn)單的WinForms控件、 大多數(shù)舊的遺留應(yīng)用程序) 和 MS UI Automation (WinForms, WPF, Store apps, Qt5, browsers)

2、 安裝

python -m pip install pywinauto

3、 簡(jiǎn)單用法

from pywinauto.application import Application

app = Application(backend="uia").start("Notepad.exe")
app["無標(biāo)題 - 記事本"].draw_outline()
app["無標(biāo)題 - 記事本"].menu_select("編輯->替換...")
app["無標(biāo)題 - 記事本"]["取消"].click()
app["無標(biāo)題 - 記事本"].Edit.type_keys("Hi from Python interactive prompt %s" % str(dir()), with_spaces = True)
app["無標(biāo)題 - 記事本"].menu_select("文件->退出")
app["無標(biāo)題 - 記事本"]["不保存"].click()

4、 文檔

????pywinauto 0.6.8 documentation

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容