Skip to content

selenium 이미지 등록 테스트 자동화 코드 공유 node.js #23

Open
@daehwan2

Description

@daehwan2

selenium을 이용하여 이미지 등록을 자동화하는 코드이다.
현재 코드는 4개의 이미지를 등록하게 된다.

불편한점은 현재실행중인 크롬에서 실행되는게 아니기때문에 로그인을 새롭게 다시 해주어야 한다는 것이다.
이때 카카오 인증과정이 필요해서 20초안에 카카오톡으로 확인버튼을 눌러야만 하도록 설정했다.

이 또한 귀찮기 때문에 추후에 수정이 필요할 것 같다.

사용법

.env 파일에 카카오 이메일, 비밀번호를 입력하고 이미지 경로를 코드에서 따로 설정해주면 등록이 자동화된다.

.env

EMAIL=test@test
PASSWORD=1234

app.js

require("chromedriver");
require("dotenv").config();
var { Builder, By, Key, until } = require("selenium-webdriver");
const chrome = require("selenium-webdriver/chrome");
(async function helloSelenium() {
  try {
    const chromeOptions = new chrome.Options();
    chromeOptions.excludeSwitches("enable-logging");
    var driver = new Builder()
      .forBrowser("chrome")
      .setChromeOptions(chromeOptions)
      .build();

    await driver.get("http://localhost:3000/login");

    const kakaoLoginButton = await driver.findElement(
      By.className(
        "w-[280px] h-[60px] bg-[#F5E14C] rounded-xl mt-24 m-auto shadow-md cursor-pointer"
      )
    );

    await kakaoLoginButton.click();

    const emailInput = await driver.findElement(By.id("id_email_2"));
    const passInput = await driver.findElement(By.id("id_password_3"));

    await emailInput.sendKeys(process.env.EMAIL);
    await passInput.sendKeys(process.env.PASSWORD, Key.ENTER);
    await driver.sleep(20000);
    await driver.navigate().to("http://localhost:3000/registerWorldcup");
    await driver.sleep(1500);
    const titleInput = await driver.findElement(By.id("titleInput"));
    await titleInput.sendKeys("테스트 제목");

    const file = await driver.findElement(By.id("chooseFile"));
    await file.sendKeys(
      "C:\\blogmaker\\assets\\built\\images\\author-logo.jpg"
    );
    await file.sendKeys(
      "C:\\blogmaker\\assets\\built\\images\\background-frontend.jpg"
    );
    await file.sendKeys(
      "C:\\blogmaker\\assets\\built\\images\\blog-cover1.jpg"
    );
    await file.sendKeys("C:\\blogmaker\\assets\\built\\images\\bus.jpg");

    for (let i = 0; i < 4; i++) {
      const imageTitle = await driver.findElement(By.id(`imageTitle${i + 1}`));
      const imageTag = await driver.findElement(By.id(`imageTag${i + 1}`));
      await imageTitle.sendKeys(`${i + 1}번 이미지`);
      await imageTag.sendKeys("감자", Key.ENTER);
      await imageTag.sendKeys("고구마", Key.ENTER);
      await imageTag.sendKeys("김", Key.ENTER);
    }

    const submitButton = await driver.findElement(By.id("submitButton"));
    await submitButton.click();
  } catch (err) {
    console.log(err);
  }
})();

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions