前言:
Macaca 是一套面向用戶端軟件的測試解決方案辞色,提供了自動化驅動,周邊工具浮定,集成方案相满。由阿里巴巴公司開源:http://macacajs.github.io/macaca/
特點:
同時支持PC端和移動端(Android、iOS)自動化測試桦卒。
支持JavaScript(Node.js)立美、Java、Python方灾。
周邊工具:支持用例錄制的UI Recorder建蹄。
本次教程將介紹如何使用Macaca進行PC端自動化測試。使用編程語言為Python3.5(Macaca只支持Python3.4以上版本)
環(huán)境:windows系統(tǒng)
環(huán)境安裝:
1裕偿、安裝NodeJs
注意:(version >= v7.x)
2洞慎、切換切換淘寶源
>> npm install -g cnpm --registry=https://registry.npm.taobao.org
3、安裝macaca-cli
>>cnpm i macaca-cli -g
4嘿棘、安裝webdriver-client
>>cnpm i webdriver-client
5拢蛋、安裝chome驅動
>>cnpm i macaca-chrome -g
>>cnpm install macaca-chromedriver -g
6、安裝macaca-electron ?(macaca-electron是基于Electron開發(fā)的Macaca驅動蔫巩,是Macaca驅動之一)
>cnpm install macaca-electron -g
7谆棱、安裝Macaca Python Client,支持pip安裝圆仔。
>python3 -m pip install wd
用例編寫:
項目目錄F:\workspace\macaca-test-sample\macaca-test下創(chuàng)建測試用例:macaca.test.py垃瞧,其中macaca-test為測試目錄集。
代碼如下:
import unittest
from macaca import WebDriver
from time import sleep
desired_caps = {
'platform Name' : 'Desktop', ? ?// iOS, Android, Desktop
'browser Name' : 'Chrome', ? ? // Chrome, Electron
}
# 對應Macaca服務的ip和端口號坪郭。
server_url = {
'hostname' : '127.0.0.1',
'port' : 3456
}
class MacacaTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.driver = WebDriver(desired_caps, server_url)
cls.driver.init()
@classmethod
def tearDownClass(cls):
cls.driver.quit()
def test_get_url(self):
self.driver.get('https://www.baidu.com')
sleep(2)
self.assertEqual(self.driver.title,u'百度一下个从,你就知道')
def test_search_macaca(self):
self.driver.element_by_id("kw").send_keys("python")
self.driver.element_by_id("su").click()
sleep(2)
self.driver.element_by_link_text("Python教程 - 廖雪峰的官方網站").click()
sleep(2)
allhandles =self.driver.window_handles
self.driver.switch_to_window(allhandles[1]) ? //切換頁面
sleep(1)
title =self.driver.title
self.assertTrue('Python教程 - 廖雪峰的官方網站',title)
if__name__ =='__main__':
unittest.main()
API詳解:
driver.init() ?初始化瀏覽器
driver.quit() ?退出瀏覽器
driver.element_by_id ?根據id來查找元素
driver.element_by_link_text ?根據text來查找元素
driver.switch_to_window ?切換頁簽
driver.title ?獲取當前頁的title
備注:與selenium的API極為相似,熟悉selenium的同學可以快速上手歪沃,定位元素的方法一致嗦锐。
詳細API見官網:https://macacajs.github.io/wd.py/api.html#module-macaca.webdriver
執(zhí)行用例:
1、啟動macaca服務:
>>macaca server --verbose? //加--verbose可以看到詳細的執(zhí)行過程
2沪曙、執(zhí)行用例:
>>python3 macaca.test.py
我遇到的坑:
1奕污、運行測試用例時,server循環(huán)報錯液走,chrome瀏覽器未運行測試步驟
解決辦法:chrome版本太高了碳默,請降低到4.6~4.8之間的版本~
推薦下載網址:http://www.chromedownloads.net/ (各個版本的安裝包都有,良心網站)
2缘眶、執(zhí)行測試用例過程重嘱根,driver.quit()報錯
解決辦法:仍然是chrome版本問題
3、切換頁簽窗口失敗
解決辦法:需要先獲取當前頁柄driver.window_handles
以上