selenium node js 네이버로그인 해보기 (3)
selenium node js 네이버로그인 해보기 (3) — #selenium #nodejs #selenium로그인 학습법 이론 학습을 하기 이전, 명심해야할 학습법이 있다. 1.이해가지...
#selenium #nodejs #selenium로그인
학습법 이론
학습을 하기 이전, 명심해야할 학습법이 있다.
1.이해가지 않는다고 뒤돌아가 다시 보지 말 것
2.외우지 말라
=> 자주 봐서 외워짐을 당하라
=> 크롬을 통해 copy and paste하라
- 이해하는게 중요하다
=> 왜 생겨났는지?
=> 왜 사용하는지?
===> 응용이 가능해진다.
selenium 네이버 로그인 해보기
selenium네이버 실행
이전글에서 selenium으로 네이버 실행을 완료하였다. 이제 네이버 로그인을 하는 기능을 구현해보자.
가장 먼저 로그인 버튼의 class를 찾아줘야 한다. 로그인 버튼의 class는 link\_login이다. 코드 작성에 필요하니 따로 복사해두자.
selenium네이버 실행 이후 대기
| const {Builder,By,until} = require("selenium-webdriver");async function example () { let driver = await new Builder() .forBrowser('chrome') .build(); *//**네이버실행 await driver.get("https://www.naver.com"); await* driver.wait(until.elementLocated(By.css('#footer'))); } |
|---|
네이버 실행 이후 네이버 창이 모두 뜰때까지 대기해줘야한다. node js는 정말빠르게 작동하기 때문에 조금이라도 페이지 로딩 속도가 느려지면, 다음동작으로 바로 넘어가버려 제대로 작동하지 않는다.
selenium 네이버 로그인 버튼 클릭
| async function example () { *//**로그인버튼 클릭 const loginBtn = await* driver.findElement(By.css("a.link\_login")); loginBtn.click(); } |
|---|
기존코드를 계속 쓰기에는 길어서 필요한 부분만 작성하겠다. 이어서 생각해주면된다.
아까 찾은 class를 driver상에서 찾아줘야 한다. findElement속성을 활용하여 class="link\_login"을 찾아주자.
찾아주었으면 .click(); 메서드로 실행할 수 있다.
node js는 javscript이기 때문에 javscript에서 사용하는 객체,메서드 사용이 모두 가능하다.
selenium 네이버 로그인페이지 이동 및 id/pw넣기
| async function example () { *//**대기 await driver.wait(until.elementLocated(By.css('#id'))); await driver.wait(until.elementLocated(By.css('#pw'))); //**id/pw찾기 const idInput = await driver.findElement(By.id('id')) const pwInput = await* driver.findElement(By.id('pw')) let id = "아이디" let pw = "비밀번호" } |
|---|
클릭해주면 페이지가 넘어가는데, 이때 원하는 창이 나올때가지 다시한번 대기해준다. 우리가 입력하는 곳은 로그인 ID/PW를 넣는 input태그로 input태그가 웹창에 나오는 것을 기다려준 후 ID/PW입력을 해주면된다.
input태그의 id를 확인했더니, ID입력란에는 id=id, PW입력란에는 id=pw인 것을 확인했다.
| async function example () { *//**아이디 비번 입력 await idInput.sendKeys(id); await* pwInput.sendKeys(pw); } |
|---|
sendKeys메서드를 사용해 id와 pw값을 넣어주면된다.
selenium 네이버 로그인페이지 로그인 버튼클릭
다시한번 로그인 버튼을 찾아주자. id값이 log.login인것을 확인했다.
| async function example () { *//**로그인 버튼클릭 const loginSubmit = await driver.findElement(By.id('log.login')); await* loginSubmit.click();} |
|---|
다시한번 클릭해주면 된다.
네이버 로그인 오류
위의 방법으로 네이버에 로그인을 학게 된다면, 네이버 자동입력 방지 메세지가 뜨면서 퀴즈를 푸는란이 생길 것이다. 네이버 자체에서 데이터를 가져가는 것을 좋아하지 않기때문에 막아두었다. 차후에 해결방법을 공부한 후 추가로 작성해보겠다.



