如何使用Playwright對Java API實現(xiàn)自動視覺測試
微軟新的端到端瀏覽器自動化框架Playwright引起了轟動!僅在幾個月前,我才試玩了Playwright,當(dāng)時它是一個僅JavaScript的框架,當(dāng)?shù)弥Z言支持已經(jīng)擴(kuò)展到我心愛的Java以及Python和C#時,我感到非常驚喜。
借助額外的語言支持以及跨現(xiàn)代瀏覽器引擎Chromium,F(xiàn)irefox和WebKit執(zhí)行的能力,這使Playwright與Selenium WebDriver處于同一類別,成為所有需要交叉測試的Web測試人員(不僅是JS)的可行測試解決方案瀏覽器測試功能,適用于復(fù)雜的應(yīng)用程序。
我喜歡通過實際使用框架來自動化現(xiàn)實場景來評估框架。因此,在本文中,我將與Playwright分享構(gòu)建測試項目的步驟,其中包括Page Objects,還將Playwright步驟與Selenium WebDriver中的等效步驟進(jìn)行比較。
如何安裝Playwright Java
Playwright入門的第一步是將依賴項添加到您的項目中。您可以從Maven存儲庫中獲得Playwright客戶端。我創(chuàng)建了一個新的pom.xml文件,并添加了playwright依賴項。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>angie.jones</groupId> <artifactId>playwright-java</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.microsoft.playwright</groupId> <artifactId>playwright</artifactId> <version>0.180.0</version> </dependency> </dependencies> </project>
像Selenium WebDriver一樣,Playwright是一種瀏覽器自動化工具,不一定限于測試框架。實際上,它們都不提供任何斷言方法。因此,您還需要添加一個斷言庫。對于此示例,我將使用TestNG。
<dependencies> <dependency> <groupId>com.microsoft.playwright</groupId> <artifactId>playwright</artifactId> <version>0.180.0</version> </dependency> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.3.0</version> <scope>test</scope> </dependency> </dependencies>
如何在Playwright中啟動瀏覽器
Playwright 允許您創(chuàng)建特定類型的瀏覽器對象。選項包括Chromium(基于Chrome和Edge),F(xiàn)irefox和WebKit(基于Safari引擎)。使用此Browser 對象,可以使用launch()方法啟動瀏覽器實例。
package base;
import com.microsoft.playwright.*;
import org.testng.annotations.BeforeClass;
public class BaseTests {
private Browser browser;
@BeforeClass
public void setUp(){
browser = Playwright
.create()
.chromium()
.launch();
}
}
默認(rèn)情況下,Playwright以無頭模式啟動瀏覽器,這意味著您實際上不會看到測試執(zhí)行。如果您希望瀏覽器打開,則可以通過傳入LaunchOption禁用無頭模式:
.launch(new BrowserType.LaunchOptions().withHeadless(false));
除了設(shè)置無頭模式外,LaunchOptions還提供了其他幾種方法,包括設(shè)置環(huán)境變量和打開Chromium開發(fā)工具的方法。
如何在Playwright中啟動網(wǎng)站
現(xiàn)在我們有了瀏覽器,可以加載測試中的應(yīng)用程序– Automation Bookstore。為此,我們需要一個Page對象–與Selenium中的WebDriver對象相似。要創(chuàng)建Page對象,請在第8行上調(diào)用browser.newPage()。它表示瀏覽器窗口中的單個選項卡。有了這個對象,我們就可以導(dǎo)航到我們的URL(第9行)。
@BeforeClass
public void setUp(){
browser = Playwright
.create()
.chromium()
.launch(new BrowserType.LaunchOptions().withHeadless(false));
Page page = browser.newPage();
page.navigate("https://automationbookstore.dev/");
}
如何在Playwright中創(chuàng)建頁面對象
我們已經(jīng)在瀏覽器中加載了應(yīng)用程序,現(xiàn)在我們想使用Page Object Model設(shè)計模式來創(chuàng)建一個Java類,該Java類代表應(yīng)用程序的Search頁面。
為了與Web元素進(jìn)行交互,Page Object類將需要訪問我們在上面創(chuàng)建的Playwright Page對象。同樣,這與我們將Selenium WebDriver對象傳遞給Page Object類以便它們可以執(zhí)行瀏覽器交互方法的方式類似。
Page page = browser.newPage();
page.navigate("https://automationbookstore.dev/");
SearchPage searchPage = new SearchPage(page);
package pages;
import com.microsoft.playwright.Page;
public class SearchPage {
private Page page;
public SearchPage(Page page){
this.page = page;
}
}
我要添加到此類的第一個方法是search(),它將接收文本并將其輸入到文本字段中。這樣做的方法是fill(),它使用一個定位符和您想要輸入的文本到字段中。您可以在第11行看到調(diào)用。
public class SearchPage {
private Page page;
private String locator_searchBar = "#searchBar";
public SearchPage(Page page){
this.page = page;
}
public void search(String query) {
page.fill(locator_searchBar, query);
}
}
以上就是如何使用Playwright對Java API實現(xiàn)自動視覺測試的詳細(xì)內(nèi)容,更多關(guān)于Playwright對Java API實現(xiàn)自動視覺測試的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解spring boot starter redis配置文件
spring-boot-starter-Redis主要是通過配置RedisConnectionFactory中的相關(guān)參數(shù)去實現(xiàn)連接redis service。下面通過本文給大家介紹在spring boot的配置文件中redis的基本配置,需要的的朋友參考下2017-07-07
springboot下實現(xiàn)RedisTemplate?List?清空
我們經(jīng)常會使用Redis的List數(shù)據(jù)結(jié)構(gòu)來存儲一系列的元素,當(dāng)我們需要清空一個List時,可以使用RedisTemplate來實現(xiàn),本文就來詳細(xì)的介紹一下如何實現(xiàn),感興趣的可以了解一下2024-01-01
使用spring-data-redis中的Redis事務(wù)
這篇文章主要介紹了使用spring-data-redis中的Redis事務(wù),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
Spring Gateway動態(tài)路由的實現(xiàn)方案
Spring Cloud Gateway (下文簡稱 Gateway)作為微服務(wù)網(wǎng)關(guān),動態(tài)配置路由是剛需,畢竟沒人想路由一改就要重啟網(wǎng)關(guān),本文結(jié)合源碼,提供一種動態(tài)路由配置的思路,需要的朋友可以參考下2025-09-09
java高并發(fā)InterruptedException異常引發(fā)思考
這篇文章主要為大家介紹了java高并發(fā)InterruptedException異常引發(fā)思考,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
maven如何利用springboot的配置文件進(jìn)行多個環(huán)境的打包
這篇文章主要介紹了maven如何利用springboot的配置文件進(jìn)行多個環(huán)境的打包,在Spring Boot中多環(huán)境配置文件名需要滿足application-{profiles.active}.properties的格式,其中{profiles.active}對應(yīng)你的環(huán)境標(biāo)識,本文給大家詳細(xì)講解,需要的朋友可以參考下2023-02-02
MyBatis處理CLOB/BLOB類型數(shù)據(jù)以及解決讀取問題
這篇文章主要介紹了MyBatis處理CLOB/BLOB類型數(shù)據(jù)以及解決讀取問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04

