극작가를 사용하여 원격 서버에서 파일 다운로드
아래 예는 원격 서버에 있는 파일의 위치를 가리키는
href
가 있는 일반적인 유사 다운로드 버튼입니다.Playwright를 사용하여 이 문제를 해결하는 방법에는 여러 가지가 있습니다. 아래 예제는 REST 호출을 수행하는 Playwrights의 기능을 활용합니다.
먼저
fs
import * as fs from 'fs/promises' // For saving the file contents to disk
테스트 내에서 다운로드할 파일의
baseUrl
및 resource
경로를 정의합니다.const baseUrl = 'https://www.tesla.com/'
const resource = 'ns_videos/2021-tesla-impact-report.pdf'
API 테스트 도우미에서
get
메서드를 호출하기만 하면 됩니다.const getResp = await page.context().request.get(`${baseUrl}${resource}`)
응답 본문은 버퍼 유형입니다. 표준
fs
라이브러리를 사용하여 이 원시 콘텐츠를 파일로 저장할 수 있습니다. 아래 예에서는 다운로드한 파일에 임의의 타임스탬프를 포함하도록 선택했습니다. 이것은 전적으로 선택 사항이며 구현은 다를 수 있습니다.let responseBuffer = await getResp.body()
await fs.writeFile(`${new Date().valueOf()}_downloaded_pdf_from_tesla.pdf`, responseBuffer, 'binary')
테스트가 실행되면 다운로드한 파일(이 예에서는 pdf)이 다음과 같이 로컬 디스크에 나타납니다.
파일을 프로젝트 루트 폴더에 직접 다운로드하는 것은 대부분의 시나리오에서 적합하지 않을 수 있습니다. 테스트를 한 번 더 변경하고 파일을 다른 파일로 직접 출력하겠습니다.
테스트 정의에
testInfo
를 추가합니다.test('able to download a remote file to disk', async ({ page }, testInfo) => {
testInfo
개체에서 제공하는 출력 경로를 사용하도록 다운로드 경로를 수정합니다.const fileName = `${new Date().valueOf()}_downloaded_pdf_from_tesla.pdf`
const downloadPath = testInfo.outputPath(fileName)
await fs.writeFile(downloadPath, responseBuffer, 'binary')
테스트를 다시 실행하면 다운로드한 파일이
test-results
폴더에 유지됩니다.최종 솔루션:
Reference
이 문제에 관하여(극작가를 사용하여 원격 서버에서 파일 다운로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ryanroselloog/use-playwright-to-download-files-from-remote-servers-23b0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)