๐Ÿ Python Selenium ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๋งŒ๋“ค๊ธฐ

์ด์ค€์„ยท2021๋…„ 5์›” 5์ผ
1

ํ…Œ์ŠคํŠธ

๋ชฉ๋ก ๋ณด๊ธฐ
1/3
post-thumbnail

์„œ๋ก 

์š”์ฆ˜ Python ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค. Java ๋ฐ–์— ํ•  ์ค„ ๋ชฐ๋ผ์„œ ์•ฝ๊ฐ„ ๊ฑฑ์ •ํ•˜๊ณ  ๋“ค์–ด๊ฐ”๋Š”๋ฐ ์˜์™ธ๋กœ ํฐ ํ‹€์€ ๊ฐ„๋‹จํ–ˆ๋‹ค. ๋จธ์‹ ๋Ÿฌ๋‹ ์ˆ˜์—…์„ ๊ฒฝํ—˜ (์ง„์งœ ๊ณต๋ถ€๋Š” ์•ˆํ•˜๊ณ  ๊ฒฝํ—˜๋งŒ ํ–ˆ๋‹ค.)์„ ํ•œ ์ ์ด ์žˆ์–ด Python ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ๋ฌธ๋ฒ• ์ •๋„๋Š” ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ชฐ๋ผ๋„ ์ฐพ์œผ๋ฉด์„œ ์ถฉ๋ถ„ํžˆ ํ•  ๋งŒ ํ–ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด๋ฒˆ ๊ธฐํšŒ์— ๊ฐ•๋ ฅํ•œ ์˜คํ”ˆ์†Œ์Šค ํ…Œ์ŠคํŠธ ๋„๊ตฌ์ธ Selenium ์„ ์ด์šฉํ•ด์„œ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜๊ณ ์ž ํ•œ๋‹ค. ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŽ™์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • OS : Window 10 Pro
  • IDE : Pycharm Ultimate Edition (ํ•™์ƒ ์ธ์ฆํ•˜๋ฉด 1๋…„ ๋ฌด๋ฃŒ!, ๋ฐฉ๋ฒ•์€ ๊ตฌ๊ธ€๋ง ใ„ฑใ„ฑ)
  • Python SDK : Python 3.8 (๋งํฌ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์„ค์น˜ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.)
  • Web browser : Google Chrome 90
  • Python Environment : virtualenv

๋ณธ๋ก 

๋จผ์ € Selenium ์„ ์ด์šฉํ•ด์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์ „์— ์ž์‹ ์ด ์–ด๋–ค ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€, ํ•ด๋‹น ๋ธŒ๋ผ์šฐ์ €์˜ Major ๋ฒ„์ „์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„์•ผ ํ•œ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” Chrome ์„ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

1. Chrome ๋ฒ„์ „ ํ™•์ธํ•˜๊ธฐ

1) Chrome์„ ์‹คํ–‰ํ•œ๋‹ค.

Chrome์„ ์‹คํ–‰ํ•œ ๋‹ค์Œ์— ์‚ฌ์ง„์„ ์ฐธ๊ณ ํ•ด์„œ Chrome ์ •๋ณด๋ฅผ ํด๋ฆญํ•œ๋‹ค.

๋ˆ„๋ฅด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ˆˆ์—ฌ๊ฒจ ๋ณผ ๋ถ€๋ถ„์€ 90์ด๋ผ๋Š” ์ˆซ์ž๋‹ค. Selenium ์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ œ๊ณตํ•˜๋Š” Selenium driver ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„์•ผ ํ•˜๋Š”๋ฐ ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์˜ Major ๋ฒ„์ „๊ณผ ๋™์ผํ•œ driver ๋ฅผ ๋‹ค์šด๋ฐ›์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

2. Web browser selenium driver ๋‹ค์šด๋กœ๋“œ

๋”ฐ๋ผ์„œ ํ•ด๋‹น ๋ฒ„์ „์„ ํ™•์ธํ–ˆ์œผ๋ฉด ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋งž๋Š” driver ๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ ๋‹ค์šด๋กœ๋“œ ๊ฒฝ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. (๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•  ๊ฒƒ ๊ฐ™์€ 3๊ฐ€์ง€ ์›น ๋ธŒ๋ผ์šฐ์ €๋งŒ ๋งํฌํ–ˆ๋‹ค. ๋‚˜๋จธ์ง€๋Š” ๊ตฌ๊ธ€์— ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋‚˜์˜ฌ๊ฑฐ๋‹ค. ๐Ÿ˜†)

๋ฒ„์ „์— ๋งž๊ฒŒ๋”, ์ ๋‹นํ•œ ์œ„์น˜์— ๋‹ค์šด๋กœ๋“œ๋ฅผ ํ•ด์ฃผ๊ณ  ๊ฒฝ๋กœ๋ฅผ ๊ธฐ์–ตํ•œ๋‹ค.

3. Python project ์ƒ์„ฑํ•˜๊ธฐ

Pycharm ์„ ์ด์šฉํ•ด์„œ Python ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

Pycharm ์ด ์•„๋‹Œ ๋‹ค๋ฅธ IDE ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฌธ์ œ ์—†์ง€๋งŒ ํ•„์ž๋Š” Pycharm ์ด ํŽธํ•ด์„œ Pycharm ์„ ์ด์šฉํ•ด์„œ ์ง„ํ–‰ํ•  ์˜ˆ์ •

1) Pycharm ์‹คํ–‰ > File > New Project

Pycharm ์„ ์ตœ์ดˆ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ New Project ๋ฒ„ํŠผ์ด ์žˆ๋‹ค. ํ•ด๋‹น ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ๋„ ๋˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•ด์„œ New Project ๋ฅผ ์ง„ํ–‰ํ•ด๋„ ๋œ๋‹ค.

ํ•ด๋‹น ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋‹ค์ด์–ผ๋กœ๊ทธ๊ฐ€ ๋œจ๋Š”๋ฐ ์—ฌ๊ธฐ์„œ Virtual Environment ๋ฅผ ์ด์šฉํ•ด์„œ project๋ฅผ ๊ตฌ์„ฑํ•  ์˜ˆ์ •์ด๋‹ค.

Python ์„ ์ด์šฉํ•ด์„œ Project ๋ฅผ ๋งŒ๋“ค ๋•Œ Virtualenv ๋ฅผ ์ด์šฉํ•ด์„œ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค๊ณ  ํ•˜๋Š” ๊ฑฐ ๊ฐ™์Œ. Global๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค์šด๋ฐ›์œผ๋ฉด ๋‚ด ์ฝคํ“จํƒ€๊ฐ€ ๋งŽ์ด ์•„ํŒŒํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•˜๋Š”๊ฑฐ ๊ฐ™์Œ

๋”ฐ๋ผ์„œ Location ์œ„์น˜๋ฅผ ์ž˜ ๋ด๋‘๊ณ  Virtualenv ๋กœ ์ž˜ ์„ ํƒ์ด ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

๐Ÿ cmd๋ฅผ ์ด์šฉํ•œ python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ตฌ์„ฑ

ํ˜น์‹œ cmd ์ปค๋งจ๋“œ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ ์ปค๋งจ๋“œ๋ฅผ ์ด์šฉํ•œ๋‹ค.
์šฐ์„  ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์„ ์›ํ•˜๋Š” ํด๋”๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•ด๋‹น ๊ฒฝ๋กœ๋กœ cmd๋ฅผ ์ผ ๋‹ค.

1) pip install virtualenv
2) virtualenv venv -p python3
3-1) window ์ผ ๊ฒฝ์šฐ : cd venv/Scripts/ && activate
3-2) linux ์ผ ๊ฒฝ์šฐ : source venv/bin/activate

3๋ฒˆ ์ปค๋งจ๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ปค๋งจ๋“œ ๋ผ์ธ์— (venv) ๊ฐ€ ๋œฐ ๊ฒƒ์ด๋‹ค. ๊ทธ ์ƒํƒœ์—์„œ ์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค์šด๋ฐ›์•„์„œ ์“ฐ๋ฉด ๊ฐ€์ƒํ™˜๊ฒฝ์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค์šด๋ฐ›๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

2) Selenium ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‹ค์šด๋กœ๋“œ

File > Settings ๋ฅผ ๋ˆŒ๋Ÿฌ์„œ ๋‹ค์Œ ์ฐฝ์„ ๋„์šด๋‹ค.

๊ทธ๋ฆฌ๊ณ ๋Š” Project: <ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ๋ช…> > Python Interpreter ๋กœ ์ง„์ž…ํ•œ๋‹ค.
์•ž์œผ๋กœ ํ•ด๋‹น ๋ถ€๋ถ„์„ ์ด์šฉํ•ด์„œ ์†์‰ฝ๊ฒŒ Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•  ์˜ˆ์ •์ด๋‹ค.

ํ•ด๋‹น ๋ถ€๋ถ„์—์„œ โž• ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณด๋„๋ก ํ•˜์ž.

์šฐ๋ฆฌ๋Š” Selenium ์„ ์ด์šฉํ•  ์˜ˆ์ •์ด๊ธฐ ๋•Œ๋ฌธ์— Selenium ์„ ๊ฒ€์ƒ‰์ฐฝ์— ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด Install Package ๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์ž.

ํ•ด๋‹น ๋ฌธ๊ตฌ๊ฐ€ ๋œฌ๋‹ค๋ฉด ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๊ฐ€ ๋œ ๊ฒƒ์ด๋‹ค. (๊ฑฐ์˜ ์˜ค๋ฅ˜๋‚  ์ผ์ด ์—†๋‹ค.)
๊ทธ๋ฆฌ๊ณ  virtualenv ํ™˜๊ฒฝ์œผ๋กœ project๋ฅผ ๋งŒ๋“ค๋ฉด venv ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜๋Š”๋ฐ ํ•ด๋‹น ํด๋”์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด Selenium ์ด ์„ค์น˜๋œ ๋ชจ์Šต๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ cmd๋ฅผ ์ด์šฉํ•œ Selenium ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

1) (venv) ๊ฐ€์ƒํ™˜๊ฒฝ์œผ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.
C:\Users\junsugi\PycharmProjects\selenium> dir
 C ๋“œ๋ผ์ด๋ธŒ์˜ ๋ณผ๋ฅจ์—๋Š” ์ด๋ฆ„์ด ์—†์Šต๋‹ˆ๋‹ค.
 ๋ณผ๋ฅจ ์ผ๋ จ ๋ฒˆํ˜ธ: E4E9-24A4

 C:\Users\junsugi\PycharmProjects\selenium ๋””๋ ‰ํ„ฐ๋ฆฌ

2021-05-05  ์˜คํ›„ 05:39    <DIR>          .
2021-05-05  ์˜คํ›„ 05:39    <DIR>          ..
2021-05-05  ์˜คํ›„ 05:39    <DIR>          .idea
2021-05-05  ์˜คํ›„ 05:39                97 main.py
2021-05-05  ์˜คํ›„ 05:02    <DIR>          venv
               1๊ฐœ ํŒŒ์ผ                  97 ๋ฐ”์ดํŠธ
               4๊ฐœ ๋””๋ ‰ํ„ฐ๋ฆฌ  259,328,897,024 ๋ฐ”์ดํŠธ ๋‚จ์Œ
               
C:\Users\junsugi\PycharmProjects\selenium> cd venv/Scripts/ && activate
(venv) C:\Users\junsugi\PycharmProjects\selenium > 
2) pip ๋ฅผ ์ด์šฉํ•ด์„œ selenium์„ ๋‹ค์šด๋กœ๋“œ ํ•œ๋‹ค.
(venv) C:\Users\junsugi\PycharmProjects\selenium > pip install selenium
Collecting selenium
  Using cached selenium-3.141.0-py2.py3-none-any.whl (904 kB)
Requirement already satisfied: urllib3 in c:\users\junsugi\pycharmprojects\selenium\venv\lib\site-packages (from selenium) (1.26.4)
Installing collected packages: selenium
Successfully installed selenium-3.141.0

Sucessfully installed selenium-3.141.0 ์ด ์ถœ๋ ฅ๋œ๋‹ค๋ฉด ์ •์ƒ์ ์œผ๋กœ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์ด๋ฃจ์–ด์ง„ ๊ฒƒ์ด๋‹ค.

3) Selenium ์‹คํ–‰ํ•˜๊ธฐ

Selenium ์ด ์ •์ƒ์ ์œผ๋กœ ๊ตฌ์„ฑ์ด ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ ์–ด๋ณผ ์˜ˆ์ •์ด๋‹ค. Project ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ main.py๋ฅผ ์ผ ๋‹ค.
๊ทธ๋ฆฌ๊ณ ๋Š” ๊ตฌ๊ธ€ ํ™ˆํŽ˜์ด์ง€๋ฅผ ์ผœ๋Š” ์ฝ”๋“œ๋ฅผ ์ ์–ด๋ณผํ…๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

import time
from selenium import webdriver

def print_hi():
    // call selenium driver
    driver = webdriver.Chrome("C:/Users/junsugi/Desktop/chromedriver.exe")
    // getํ•จ์ˆ˜๋Š” ํ•ด๋‹น ์›น์‚ฌ์ดํŠธ๋ฅผ ๋„์›Œ์ค€๋‹ค.
    driver.get("https://google.com")
    // ์ž๋ฐ”์—์„œ thread.sleep, ํ…Œ์ŠคํŠธ ์™„๋ฃŒ ํ›„ ๋ฐ”๋กœ ์›น๋ธŒ๋ผ์šฐ์ € ๊บผ์ง์„ ๋ฐฉ์ง€ (100์ดˆ ๋’ค ์ข…๋ฃŒ)
    time.sleep(100)
    // close๋ฅผ ์ œ๋Œ€๋กœ ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.
    driver.close()

// mainํ•จ์ˆ˜ ์‹คํ–‰ (์ž๋ฐ”๋กœ ์น˜๋ฉด public static void main)
if __name__ == '__main__':
    print_hi()

python ์€ ๊ณต๋ฐฑ๊ณผ ์ค„๋ฐ”๊ฟˆ์œผ๋กœ ๊ตฌ์„ฑ(?)์„ ๊ตฌ๋ถ„ํ•œ๋‹ค. ์ž๋ฐ”๋กœ ๋”ฐ์ง€๋ฉด { }์™€ ๊ฐ™์€ ์—ญํ• ์„ ๊ณต๋ฐฑ๊ณผ ์ค„๋ฐ”๊ฟˆ์„ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ฃผ์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

์œˆ๋„์šฐ xbox ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด์„œ ๋…นํ™”ํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์›น๋ธŒ๋ผ์šฐ์ €๋Š” ๋…นํ™”๊ฐ€ ์•ˆ๋˜์„œ ํ•ธ๋“œํฐ์œผ๋กœ ์ดฌ์˜ํ›„ GIF๋กœ ๋งŒ๋“ค์—ˆ๋‹ค ใ…Žใ…Ž;;

๊ฒฐ๋ก 

Selenium ์„ค์น˜๋ถ€ํ„ฐ ์ญ‰ ๋‹ค๋ฃจ๋‹ค๋ณด๋‹ˆ ํฌ์ŠคํŒ…์ด ๋„ˆ๋ฌด ๊ธธ์–ด์กŒ๋‹ค. ๋”ฐ๋ผ์„œ 1๋ถ€์™€ 2๋ถ€๋กœ ๋‚˜๋ˆ ์„œ 1๋ถ€๋Š” ์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ๊ตฌ์„ฑ์œผ๋กœ ๋‹ค๋ฃจ๊ณ  2๋ถ€์—์„œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์†Œ๊ฐœ๋ฅผ ํ•ด ๋ณผ ์˜ˆ์ •์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  Selenium ์ด ๋๋‚˜๋ฉด ๊ณผ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์ธ JMeter ์— ๋Œ€ํ•ด์„œ๋„ ์†Œ๊ฐœ๋ฅผ ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๋‹ค๋ฃฐ ์˜ˆ์ •์ด๋‹ค.

๋‹ค๋“ค ํ…Œ์ŠคํŠธ ํ•˜๋Š” ์Šต๊ด€์„ ๋“ค์ด๊ณ  ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ธธ ๋ฐ”๋ผ๋ฉด์„œ ์ด๋ฒˆ ํฌ์ŠคํŒ…์„ ๋งˆ์น˜๊ฒ ์Šต๋‹ˆ๋‹ค. (๋‚˜๋ถ€ํ„ฐ ํ…Œ์ŠคํŠธ ํ•˜๋Š” ์Šต๊ด€์„ ๋“ค์ด์ž ๐Ÿ˜…)

profile
ํ˜ธ์ฃผ ์›Œํ™€์ค‘ https://blog.naver.com/wnstjrl96

0๊ฐœ์˜ ๋Œ“๊ธ€