使用Playwright基於多瀏覽器進行javascript自動化測試的簡單教程- Applitools
Playwright由Microsoft建立,是一個開放原始碼瀏覽器自動化框架,使JavaScript工程師可以在Chromium,Webkit和Firefox瀏覽器上測試其Web應用程式。
啟動瀏覽器並導航到應用程式的URL
第一步是要宣告您希望針對哪個瀏覽器引擎執行測試。同樣,Playwright允許您針對Chromium,Firefox和Webkit執行測試。
如何針對chromium瀏覽器:
const { chromium } = require('playwright') |
預設情況下,Playwright以無頭模式執行。如果您想在執行測試時實際看到瀏覽器,請在啟動呼叫中將headless設定為false:
browser = await playwright.chromium.launch({headless: false}) |
接下來,為瀏覽器和頁面物件宣告變數。
const { chromium } = require('playwright') let browser, page |
關於Playwright的重要注意事項是它們的所有API都是非同步的,因此需要async / await來呼叫它們。因此,我利用這種模式來啟動瀏覽器並初始化頁面物件。
const { chromium } = require('playwright') let browser, page (async () => { browser = await chromium.launch() page = await browser.newPage() })() |
現在有了頁面物件,我可以使用page.goto()轉到我的應用程式:
(async () => { browser = await chromium.launch() page = await browser.newPage() await page.goto('https://automationbookstore.dev/') })() |
增加斷言庫
與其他許多自動測試工具一樣,關於Playwright的重要注意事項是,它旨在自動執行瀏覽器互動,但是您必須使用斷言工具 進行驗證。 在本示例中,我將使用Mocha。
const { chromium } = require('playwright') const assert = require('assert') |
我還將新增一個套件(使用'describe'),並將其中的Playwright呼叫移至before/after函式內。
const { chromium } = require('playwright') const assert = require('assert') describe('Automation Bookstore', function () { let browser, page before(async () => { browser = await chromium.launch() }) after(async () => { await browser.close() }) beforeEach(async () => { page = await browser.newPage() await page.goto('https://automationbookstore.dev/') }) afterEach(async () => { await page.close() }) }) |
訪問元素
在嘗試新工具時,我想從一個非常簡單的示例開始。基本上,Web測試自動化的“ Hello World”正在驗證頁面上的標題。因此,讓我們從那裡開始進行第一個測試!
Playwright提供了許多訪問元素的方法, 包括典型的CSS和Xpath選擇器。
檢查此應用程式的DOM時,顯示標題的元素的ID為'page-title',而我要驗證的文字是此元素的內部文字。
<h1 id="page-title" class="ui-title" role="heading" aria-level="1">Automation Bookstore</h1> |
使用page.innerText獲取CSS選擇器ID為"page-title"的值,斷言它的結果。
it('should have title', async () => { assert.equal(await page.innerText('page-title'), 'Automation Bookstore') }) |
就這樣,我進行了第一次測試!
const { chromium } = require('playwright') const assert = require('assert') describe('Automation Bookstore', function () { let browser, page before(async () => { browser = await chromium.launch() }) after(async () => { await browser.close() }) beforeEach(async () => { page = await browser.newPage() await page.goto('https://automationbookstore.dev/') }) afterEach(async () => { await page.close() }) it('should have title', async () => { assert.equal(await page.innerText('page-title'), 'Automation Bookstore') }) }) |
如果希望輸入搜尋文字:
it('should return one book when exact title is given', async () => { await page.fill('searchBar', 'Agile Testing') }) |
視覺測試
Playwright提供了影像和影片捕獲,但它更像是一種可視記錄機制,不能在斷言本身中使用。因此,我將使用適當的視覺化測試斷言庫Applitools。
安裝Applitools後,我指定第3行所需的Applitools類。
const { chromium } = require('playwright') const assert = require('assert') const { Eyes, ClassicRunner, Target, RectangleSize} = require('@applitools/eyes-playwright') |
我宣告並初始化了“eyes”物件(第3行),該物件是進行視覺測試的API。
describe('Automation Bookstore', function () { let browser, page const eyes = new Eyes(new ClassicRunner()) //... }) |
然後使用視覺測試做一個測試。
it('should be visually perfect', async () => { await page.fill('searchBar', 'test') await page.waitForSelector('li.ui-screen-hidden', { state: 'attached' }) //Visual Testing await eyes.open(page, 'Automation Bookstore - Playwright', 'Partial Search', new RectangleSize(800, 600)) await eyes.check(Target.window().fully()) await eyes.close() }) |
跨平臺測試
雖然Playwright提供了對Chromium,Webkit和Firefox的支援,但沒有對Safari或IE的內建支援。
將Playwright與Applitools的Ultrafast Grid整合後,我現在可以對我的測試進行進一步的介紹了!
與上面使用Applitools Classic Runner相對,我將對其進行修改以使用Visual Grid Runner。在第5行上,請注意,我使用數字10。這表示我希望並行執行的測試數量,從而使執行速度更快!
const {VisualGridRunner, Eyes, Target, Configuration, RectangleSize, BatchInfo, BrowserType, DeviceName, ScreenOrientation} = require('@applitools/eyes-playwright') describe('Automation Bookstore', function () { let browser, page const eyes = new Eyes(new VisualGridRunner(10)) //... }) |
現在好了!我可以指定要使用的所有瀏覽器,裝置和視口-為我的測試提供最終的跨平臺覆蓋。不僅要在功能上進行驗證,而且還要在視覺上進行驗證。
beforeEach(async () => { page = await browser.newPage() await page.goto('https://automationbookstore.dev/') const configuration = new Configuration() configuration.setBatch(new BatchInfo('Cross Platform Tests')) configuration.addBrowser(800, 600, BrowserType.CHROME); configuration.addBrowser(700, 500, BrowserType.FIREFOX); configuration.addBrowser(1024, 768, BrowserType.EDGE_CHROMIUM); configuration.addBrowser(800, 600, BrowserType.SAFARI); configuration.addBrowser(1600, 1200, BrowserType.IE_11); configuration.addDeviceEmulation(DeviceName.iPhone_X, ScreenOrientation.PORTRAIT); eyes.setConfiguration(configuration); }) |
測試本身不需要更改,它們將自動在所有指定的配置中執行。
相關文章
- 使用Playwright對Java API實現自動視覺測試 - applitoolsJavaAPI視覺APP
- 使用 Playwright 複用 Cookie:簡化自動化測試的高效方法Cookie
- 使用 Playwright 指令碼錄製簡化自動化測試:完全指南指令碼
- Playwright自動化測試工具之高階使用
- 利用Jscrīpt進行簡單的GUI自動化測試JSGUI
- 使用PostMan進行自動化測試Postman
- 使用 PostMan 進行自動化測試Postman
- 自動化測試系列(2)—— 下載瀏覽器驅動瀏覽器
- 使用karma和jasmine配合phantom瀏覽器進行單元測試ASM瀏覽器
- 如何使用瀏覽器自動化框架Playwright開發“萬媒易發”實現多平臺自動釋出文章?瀏覽器框架
- 使用QTP進行非GUI的自動化測試QTGUI
- 使用 Headless Chrome 進行自動化測試Chrome
- 玫瑰花變蚊子血,自動化無痕瀏覽器對比測試,新貴PlayWright Vs 老牌Selenium,基於Python3.10瀏覽器Python
- 使用 QUnit 進行 JavaScript 單元測試JavaScript
- 基於 Htte 的 API 自動化測試API
- JavaScript 測試教程-part 1:用 Jest 進行單元測試JavaScript
- 使用谷歌瀏覽器進行斷點除錯簡單介紹谷歌瀏覽器斷點除錯
- 使用 Robot Framework 進行自動化視覺測試Framework視覺
- Android使用Espresso進行UI自動化測試AndroidEspressoUI
- Mocha瀏覽器測試入門教程瀏覽器
- 使用chrome瀏覽器驅動自動開啟瀏覽器Chrome瀏覽器
- 《手把手教你》系列基礎篇之(四)-java+ selenium自動化測試- 啟動三大瀏覽器(下)基於Maven(詳細教程)Java瀏覽器Maven
- 在 .NET 中開發基於 Chrome 核心的瀏覽器-建立一個簡單瀏覽器Chrome瀏覽器
- 基於PhantomFlow的自動化UI測試UI
- swift - 基於TCL的自動化測試框架Swift框架
- 使用 CasperJS 進行簡單的 UI 測試JSUI
- Flutter應用進行自動化測試Flutter
- 真的要進行介面測試自動化?
- 微軟開源的Web測試和自動化神器 Playwright微軟Web
- 谷歌瀏覽器模擬進行移動端除錯簡單介紹谷歌瀏覽器除錯
- 多個 iOS 裝置同時進行 UI 自動化測試iOSUI
- 基於 LangChain 的自動化測試用例的生成與執行LangChain
- Web自動化之瀏覽器啟動Web瀏覽器
- 你該瞭解的自動化測試工具:Selenium控制瀏覽器的常用方法!瀏覽器
- Playwright自動化測試工具之元素定位實戰
- Playwright安裝與Python整合:探索跨瀏覽器測試的奇妙世界Python瀏覽器
- 2020年最受歡迎的前端自動化測試工具 - Applitools前端APP
- 基於postman的api自動化測試實踐PostmanAPI