前言
由於SWT提供的程序包並不是跨平臺的,實際部署、運行時可以根據相應平臺下載其對應程序依賴,在https://mvnrepository.com/search?q=org.eclipse.swt 如下圖所示:
開發部署可以根據你的電腦進行下載不同的依賴,博主使用的macos系統,下面就總結經常可以遇到的SWT相關問題。
Could not load SWT library 的異常
當在macos平臺運行SWT程序的時候,程序會拋出這個異常如下所示:
代碼在window平臺並沒有這個問題,而到了macos平臺就會拋出上述的問題。最開始以爲是沒有在macos加載到上述兩個程序依賴。如下圖所示:
這個實際是Windows平臺中SWT應用程序需要本地化的DLL庫的支持才能運行,它們分別是swt-awt-win32-3236.dll和swt-win32-3236.dll,但是在macos平臺並不能運行上述兩個dll文件,所以我們需要選擇macos對應的依賴,將項目中的window依賴更改爲macos系統的依賴即可:
原來的window平臺的依賴
<dependency>
<groupId>org.eclipse.swt</groupId>
<artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
<version>4.3</version>
</dependency>
更改後的macos平臺的依賴
<dependency>
<groupId>org.eclipse.swt</groupId>
<artifactId>org.eclipse.swt.cocoa.macosx.x86_64</artifactId>
<version>4.3</version>
</dependency>
更改完成後再次運行程序,發現用戶目錄下的/.swt/lib/macosx/x86_64/
)多了兩個文件如下圖所示:
SWTException: Invalid thread access異常
再次運行程序後發現報了這個錯誤如下圖所示:
解決方法是在主程序加一下VM的啓動參數:-XstartOnFirstThread
啓動後可以發現SWT組件已經啓動成功如下圖所示:
The driver executable does not exist
輸入網址進行訪問頁面報了以下的錯誤。
程序保存如下圖所示:
可以看出程序是由於缺乏chrome的驅動造成的,驅動下載地址https://npm.taobao.org
需要注意的是請下載你電腦chrome瀏覽器對應的版本驅動,可以在瀏覽器查看chrome的版本如下圖所示:
下載相應的鏈接驅動然後將其添加項目路徑下即可。
再次運行程序並不報錯。
WebDriverException: invalid argument
selenium訪問url填寫如下圖所示:
報錯如下圖所示:
解決方法是:訪問地址的時候填入http://
前綴即可。