Open
Description
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);
}
})();