一、 WinAppDriver+Selenium+Appium
1、 簡介
????WinAppDriver 是一項服務,支持在 Windows 應用程序上執行 Selenium-like UI測試自動化。此服務支持在Windows 10 PC上測試 UWP、WinForms、WPF 和 Win32應用程序。
2、 安裝和運行WinAppDriver
- 下載WinAppDirver安裝程序并安裝 Releases · microsoft/WinAppDriver · GitHub
-
打開Windows開發者模式
-
以管理員身份運行安裝目錄下的 WinAppDriver.exe
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、 文檔
二、 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()