檔案下載
在網頁測試中自動化檔案下載時,必須在不同的瀏覽器中一致地處理它們,以確保可靠的測試執行。
在此,我們提供檔案下載的最佳實務,並示範如何為 Google Chrome、Mozilla Firefox 和 Microsoft Edge 設定下載目錄。
下載路徑
在測試腳本中硬式編碼下載路徑可能會導致維護問題和可攜性問題。使用下載目錄的相對路徑,以確保在不同環境中的可攜性和相容性。
// 👎
// Hardcoded download path
const downloadPath = '/path/to/downloads';
// 👍
// Relative download path
const downloadPath = path.join(__dirname, 'downloads');
等待策略
未能實作適當的等待策略可能會導致競爭條件或不可靠的測試,特別是對於下載完成。實作明確的等待策略,以等待檔案下載完成,確保測試步驟之間的同步。
// 👎
// No explicit wait for download completion
await browser.pause(5000);
// 👍
// Wait for file download completion
await waitUntil(async ()=> await fs.existsSync(downloadPath), 5000);
設定下載目錄
若要覆寫 Google Chrome、Mozilla Firefox 和 Microsoft Edge 的檔案下載行為,請在 WebDriverIO 功能中提供下載目錄
- Chrome
- Firefox
- Microsoft Edge
loading...
loading...
loading...
如需範例實作,請參閱WebdriverIO 測試下載行為範例。
設定 Chromium 瀏覽器下載
若要使用 WebDriverIO 的 getPuppeteer
方法變更基於 Chromium 的瀏覽器(例如 Chrome、Edge、Brave 等)的下載路徑,以存取 Chrome DevTools。
const page = await browser.getPuppeteer();
// Initiate a CDP Session:
const cdpSession = await page.target().createCDPSession();
// Set the Download Path:
await cdpSession.send('Browser.setDownloadBehavior', { behavior: 'allow', downloadPath: downloadPath });
處理多個檔案下載
在處理涉及多個檔案下載的情境時,必須實作策略來有效管理和驗證每個下載。請考慮以下方法
循序下載處理: 一個接一個下載檔案,並在啟動下一個檔案之前驗證每個下載,以確保有條理的執行和準確的驗證。
平行下載處理: 利用非同步程式設計技術來同時啟動多個檔案下載,以最佳化測試執行時間。實作穩健的驗證機制,以驗證所有下載是否完成。
跨瀏覽器相容性考量
雖然 WebDriverIO 提供用於瀏覽器自動化的統一介面,但仍必須考量瀏覽器行為和功能上的差異。請考慮在不同瀏覽器上測試您的檔案下載功能,以確保相容性和一致性。
瀏覽器特定的設定: 調整下載路徑設定和等待策略,以適應 Chrome、Firefox、Edge 和其他支援瀏覽器中瀏覽器行為和偏好的差異。
瀏覽器版本相容性: 定期更新您的 WebDriverIO 和瀏覽器版本,以利用最新的功能和增強功能,同時確保與您現有的測試套件相容。