웹자동화테스트 - puppeteer + mocha + chai

Jaehoon Jung·2023년 5월 9일
0

Puppeteer

목록 보기
3/3
  1. 인스톨을한다
    npm i puppeteer mocah chai

  2. test폴더를 만들고 이름.test.js 라는 이름으로 테스트할 파일을 생성한다.

  3. 코드를 적는다.
    ex) demo.test.js 파일을 만든다.

const { expect } = require('chai');

const puppeteer = require('puppeteer');

describe('ui 자동화 테스트 콜', function () {
    it('1번째!:', function () {
        console.info('info1');
    });
    it('2번째!:', function () {
        console.info('info2');
    });
});
  1. package.json에 scripts에 있는 "test": "mocha --timeout 10000 test/demo.test.js"
    를 한다.

  2. npm run test라고 명령어를 친다.

테스트 이미지

1.test.test.js를 만들어서 puppeteer를 mocha, chai와 연동하기.
package.json에 "test": "mocha --timeout 10000 test/test.test.js"로 정의한다.

const puppeteer = require('puppeteer');

(async () => {
    console.info('시작~!');
    console.info('퍼펫티어', puppeteer);
    const browser = await puppeteer.launch({
        // 브라우저 만들어보기
        headless: false,
        args: ['--window-size=1920,1080'], // 사이즈
        slowMo: 1, // 자동화시스템이라 너무 빨리 될 수 있기때문에 느리게 해주기위함.
    });
    const page = await browser.newPage();

    await page.setViewport({
        width: 1920,
        height: 1080,
    });

    await Promise.all([
        page.goto('http://www.naver.com'),
        page.waitForNavigation(), // 다 로딩이 될때까지 기다려라.
    ]);
    //Xpath문법
    let target = "//span[text()='쇼핑']/ancestor::a";
    await page.waitForXPath(target); //default 30초기다려줌.
    let s = await page.$x(target); // Xpath 파라메터를 찾아서 리턴함.
    s = s[0];

    await Promise.all([
        await s.click(),
        page.waitForNavigation(), // 다 로딩이 될때까지 기다려라.
    ]);

    target = "//ul[@id='categoryListPage1']/li/button";
    await page.waitForXPath(target);
    let arr = await page.$x(target);

    for (item of arr) {
        const value = await item.evaluate((el) => el.textContent);
        console.info('value', value);
    }

    // 타이핑하기.
    target = "//input[@title='검색어 입력']";
    s = await page.$x(target);
    s = s[0];
    await s.type('핫한 아이템 찾아줘');
    await new Promise((resolve) => setTimeout(resolve, 3000));
    await page.close();
})();

selectorshub를 다운받아서 찾은게 아닌 래퍼런스에서 쓴 타겟값이 오류라서 시험에 통과하지못했다.
래퍼런스:https://www.youtube.com/watch?v=K28myouV8dc

profile
보노보노는 사랑입니다.

0개의 댓글