偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

我給Alibaba JManus提交的第一個PR被Merge了!

開發(fā) 項目管理
playwright是一個自動化測試框架,可以通過代碼(java、python、nodejs)來自動操作瀏覽器,你可以用它來做自動化測試、爬數據、RPA等。

前幾天給JManus提交了一個PR,就在剛剛被接受了,這篇文章分享一下這個PR修改的是什么。

圖片圖片

這個PR修改的是#2170這個bug,這個bug是這樣的:

圖片圖片

意思是,playwright在下載瀏覽器時會直接下載3個瀏覽器,chrome、firefox、webkit。

playwright是一個自動化測試框架,可以通過代碼(java、python、nodejs)來自動操作瀏覽器,你可以用它來做自動化測試、爬數據、RPA等。

而JManus,是一個AI Agent,所以提供了一個操作瀏覽器的工具,從而可以在解決用戶問題時,通過自動操作瀏覽器來完成任務,比如通過瀏覽器打開百度,進行搜索,得到實時數據,而這個工具底層就是用的playwright。

但是,目前的問題是,在第一次使用playwright時,playwright需要下載瀏覽器,默認會下載3個,但是對于JManus而言,其實只需要一個就可以了,比如只需要chrome。

看到這,你可能會覺得,這個bug容易啊,講道理,playwright這么成熟了,應該支持下載特定的瀏覽器了,如果這個bug非常容易,那么應該早就改了,但是實際這個bug是8月19號提出來的,已經有一個多月,如果我不改,可能還要等段時間才會被人改掉,所以它并沒有想象中的那么容易。

圖片圖片

當我們通過Java來使用playwright時,代碼是這樣的:

圖片圖片

其中Playwright.create()就會下載3三個瀏覽器,然后你可以指定啟動哪個瀏覽器,比如上面代碼表示啟動的是chrome瀏覽器,關鍵是,在這個create()方法中,并不支持指定下載某個特定的瀏覽器。

在playwright的官網中,確實也支持下載指定瀏覽器,但是,得通過mvn命令的方式:

圖片圖片

運行以上命令,playwright就只會下載webkit瀏覽器。

但是,在JManus中,我們不可能要求使用者先單獨執(zhí)行一下這行命令,這樣體驗太不好了。

為了解決這個bug,我往下看了playwright的Java源碼,發(fā)現源碼底層的核心是一個叫做DriverJar的類,這個類中的installBrowsers()方法就是負責下載瀏覽器的,而它下載瀏覽器的核心代碼為:

圖片圖片

其實就是開啟一個進程,運行命令,進行瀏覽器的下載,因此要修改這個bug,其實只需要在"install"后面去指定特定的瀏覽器就可以了,比如"install chromium"。

思路是這個思路,關鍵是怎么改呢,看上面這個代碼,人家也沒有提供機制讓你能在"install"后面添加其他的參數。

卡住了,這個bug,本質上需要playwright來優(yōu)化,文章寫完,我試著再去給playwright提交一個PR,讓他直接支持install特定的瀏覽器。

想要看后續(xù)或更多精彩文章,記得點贊+關注,謝謝。

那既然DriverJar本身沒有擴展點,那就再看看源碼,是不是有其他突破口,最后發(fā)現,DriverJar這個類的實例對象創(chuàng)建時,有一個擴展點:

圖片圖片

代碼還是很明顯了,會從環(huán)境變量中讀playwright.driver.impl配置,value是一個類名,如果沒有配,默認就是DriverJar,然后創(chuàng)建對應的實例對象。

既然DriverJar改不了,那我就把它換了,因此我自己定義了一個ManusDriverJar,這個類繼承了DriverJar,核心就是修改了installBrowsers()方法,現在這個方法是我自己定義的了,因此我想怎么改就怎么改了,第一步讀取配置

圖片圖片

然后最重要的就是在"install"后面增加參數:

圖片圖片

這樣,我們就可以通過配置來指定只下載某一個瀏覽器了,而不是下載3個。

最后,要使得我自己定義的ManusDriverJar生效,會在一些需要下載瀏覽器的地方,加上以下代碼:

圖片圖片

以上,就是這個PR的核心內容,官方也沒有討論,直接就合并了,因此這種方式應該也是目前最合適的修改方式了,對應的github鏈接:https://github.com/alibaba/spring-ai-alibaba/pull/2459

責任編輯:武曉燕 來源: IT周瑜
相關推薦

2023-09-28 13:21:32

2018-10-15 10:10:41

Linux內核補丁

2020-01-10 09:20:03

手機ISOJDK

2021-09-13 08:41:52

職場互聯網自閉

2020-09-21 08:01:35

Git操作系統(tǒng)Linux

2019-04-22 08:10:00

Google 開源技術

2013-10-30 22:10:28

Clouda程序

2022-10-17 10:28:05

Web 組件代碼

2010-02-26 15:38:29

Linux內核版本

2020-11-13 07:08:51

Spring Boot應用Spring

2023-09-21 22:43:17

Django框架

2021-04-07 13:38:27

Django項目視圖

2010-07-30 14:58:06

Flex應用

2012-02-08 11:15:38

HibernateJava

2011-03-03 21:04:08

bug程序員

2011-03-21 14:24:13

Debian 6

2013-01-14 09:44:58

JavaScriptJSJS框架

2015-08-07 10:51:00

Android App第一個

2022-09-02 15:22:32

Vue3.2技術代碼

2021-11-02 08:00:00

機器學習API技術
點贊
收藏

51CTO技術棧公眾號