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