1、Selenium
知名的瀏覽器web應(yīng)用測試框架,可以用Java、C#、Ruby、JavaScript、R和Python等多種編程語言編寫測試案例。
Selenium為每種語言提供客戶端API。
SeleniumWebDriver盡可能使用原生操作系統(tǒng)級別的功能,而非基于瀏覽器JavaScript的命令來驅(qū)動瀏覽器。
這樣就繞過了原生功能和JavaScript命令之間由于細微差別而產(chǎn)生的問題(包括安全限制)。它提供了很大的靈活性,甚至還支持iframe和多個瀏覽器標簽。
卓越的跨瀏覽器功能令人印象深刻??梢栽谥髁鳛g覽器(Chrome、Firefox、Safari、Edge、InternetExplorer)上執(zhí)行Selenium測試。
SeleniumGrid可以與WebDriver一起使用,以在遠程系統(tǒng)上執(zhí)行測試。
使用Selenium的唯 一缺點是,它需要大量的技能,并且編寫測試非常耗時。對沒有編程經(jīng)驗的人來說,乍一看用Selenium編寫測試似乎很容易;但是如果沒有最 佳實踐,將導致項目內(nèi)的測試自動化框架難以維護且不夠穩(wěn)定可靠。
2、Endtest
Endtest是智能自動化測試解決方案,它使用多個開源和閉源組件去簡化創(chuàng)建和執(zhí)行測試的流程。其中之一就是Recorder組件可以讓用戶不用編程技巧就能創(chuàng)建和執(zhí)行測試。你可以用圖形化界面編輯管理自己的測試案例,而不用編寫任何代碼。
它和Selenium一樣擁有靈活性,允許你自動化測試場景,其中包含iframe、多個瀏覽器標簽、文件上傳、ShadowDOM,等等。它同Selenium一樣擁有跨瀏覽器的特性,支持所有主流的瀏覽器(Chrome、Firefox、Safari、Edge、InternetExplorer)。同時,它也包括跨瀏覽器的云框架,支持Windows、Mac以及移動設(shè)備上的瀏覽器。
此外,它還有支持JavaScripts執(zhí)行的組件,以及發(fā)送API請求和連接數(shù)據(jù)庫執(zhí)行SQL語句的組件。
這些組件可用于在測試中添加額外的驗證步驟,并可準備或清理測試環(huán)境。
3、Watir
Watir是一個Ruby的瀏覽器自動化測試開源庫。
Watir與對瀏覽器的互動方式和人類是一樣的:如點擊一個網(wǎng)頁元素,填輸入字符。
它的底層使用了Selenium并且提供同樣的靈活性,也支持跨瀏覽器。同時,它也支持iframes以及多個瀏覽器標簽。
Watir最 大的優(yōu)點是API很容易使用,它在繁復的SeleniumAPI之上增加了一層簡單性。
不過,它的主要缺點是,它不如Selenium受歡迎,在尋找答案和解決方案方面你會遇到一些困難。
4、Puppeteer
一個Node庫,它提供了高級的API并通過DevTools協(xié)議來控制Chrome(或Chromium)。
我認為未來它可以代替Selenium。它也具有支持iframe和多個瀏覽器標簽的靈活性。
值得一提的是,它有2種不同的軟件包:puppeteer-core和puppeteer
唯 一的區(qū)別是puppeteer-core在安裝后不會自動下載Chromium。
puppeteer的主要缺點是缺乏跨瀏覽器功能,因為它僅適用于基于Chromium的瀏覽器。
即使Opera和Edge遷移到Chromium,也無法**Firefox和Safari將來也會這樣做。
另一個缺點是,唯 一受支持的語言是Node.js。即使到2020年一切似乎都圍繞JS展開,但是仍然有一些用戶可能想使用其他語言進行自動化測試的開發(fā)。
5、Playwright
一個Node庫,可通過單個API在Chromium、Firefox和WebKit瀏覽器上執(zhí)行自動化測試。
Playwright旨在不斷增長的Web瀏覽器集上實現(xiàn)自動化操作。Playwright類似于Puppeteer。
它支持多頁面、多域名和iframes測試,還可以模擬移動端設(shè)備,地理指向和權(quán)限控制也是可以測試的。
即使它具有更廣泛的跨瀏覽器支持,但它也不支持InternetExplorer。
因為它是一個相對較新的庫,所以你可能現(xiàn)在在線上找不到很多資源。
如果你在編寫Node.js代碼方面有扎實的經(jīng)驗,那么Playwright可以一試。