[JavaScript2020] CodeceptJS를 통해 파일 다운로드

이것은 CodeceptJS를 사용하여 파일 다운로드를 시도할 때의 노트입니다.
JavaScript 소재이기 때문에 뒤JavaScript 활동 캘린더 25일째에도 등록을 시도했습니다.

CodeceptJS 사용


이전에 각종 자동화를 시도할 때 사용한 것 중 하나는 "CodeceptJS"였다.
그때는 각각 Puppeter, Playwright, WebDriver와의 조합을 시도했고 주로 Puppeter와의 조합을 사용했다.
이런 상황에서 아래의 기사를 보고 Playwright와의 조합 등을 재검토하고 시도하는 동시에 이전에 시도하지 않았던 파일의 다운로드도 시도했다.
●2020년 12월까지 퍼페터와 플레이라이트는 어떤 것이 좋을까요? -Qiita
  https://qiita.com/YusukeIwaki/items/a9dbd48b1ed4313f3815
이 파일 다운로드와 관련하여 자신이 쓰는 노트에 남기고 싶은 것이 바로 이 글입니다.

CodeceptJS에서 파일 다운로드


codecept.conf.js의 추론


아래 페이지 정보 등을 보면 파일을 다운로드하는 경우codecept.conf.js에 "FileSystem": {} 내용을 기재할 필요가 있을 것 같습니다.
●"I.amInPath is not a function"on using FileSystem helper · Issue #931 · codeceptjs/CodeceptJS
  https://github.com/codeceptjs/CodeceptJS/issues/931

구체적으로 말하면 코드cept.conf.js에서 다음과 같은 추서를 진행하였다.
  helpers: {
    Playwright: {
      【(省略)】
    },
    "FileSystem": {}

프로그램 섹션


파일의 다운로드에 대해 페이지 안에 어떤 파일을 가리키는 링크가 있고 이 파일을 클릭하는 동작을 통해 다운로드를 실행할 수 있는 상황을 구상했다.만약 그 페이지에서 간단하게 링크를 클릭하기만 한다면 아래의 모습으로 변할 것이다.
  I.click('【(クリック対象となるテキスト)】');
파일 다운로드와 관련된 정보에서 공식 문서를 보고 다음과 같은 부분을 발견했다.
●Playwright | CodeceptJS
  https://codecept.io/helpers/Playwright/#handledownloads

다운로드 대상은 pptx, 01입니다.pptx라는 파일 이름으로 저장된 경우, 예를 들어 다음과 같이 하면 됩니다.
  I.handleDownloads('files/01.pptx');
  I.click('【(クリック対象となるテキスト)】');
  I.amInPath('output');
  I.waitForFile('files/01.pptx', 5);
이로써 output 폴더의 하위 폴더'files'에서 01.pptx 저장이 확인되었습니다.

좋은 웹페이지 즐겨찾기