์์ฆ 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
์ ๊ธฐ์ค์ผ๋ก ์ค๋ช
ํด๋ณด๋๋ก ํ๊ฒ ๋ค.
Chrome์ ์คํํ ๋ค์์ ์ฌ์ง์ ์ฐธ๊ณ ํด์ Chrome
์ ๋ณด๋ฅผ ํด๋ฆญํ๋ค.
๋๋ฅด๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ผ๋ก ์ด๋ํ๋ค.
์ฌ๊ธฐ์ ๋์ฌ๊ฒจ ๋ณผ ๋ถ๋ถ์ 90์ด๋ผ๋ ์ซ์๋ค. Selenium
์ ์ด์ฉํ๊ธฐ ์ํด์๋ ๊ฐ ๋ธ๋ผ์ฐ์ ์์ ์ ๊ณตํ๋ Selenium driver
๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์์ผ ํ๋๋ฐ ํ์ฌ ์ฌ์ฉํ๊ณ ์๋ ์น ๋ธ๋ผ์ฐ์ ์ Major ๋ฒ์ ๊ณผ ๋์ผํ driver
๋ฅผ ๋ค์ด๋ฐ์์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐ๋ผ์ ํด๋น ๋ฒ์ ์ ํ์ธํ์ผ๋ฉด ์น ๋ธ๋ผ์ฐ์ ์ ๋ง๋ driver
๋ฅผ ๋ค์ด๋ก๋ ํด์ฃผ์ด์ผ ํ๋๋ฐ ๋ค์ด๋ก๋ ๊ฒฝ๋ก๋ ๋ค์๊ณผ ๊ฐ๋ค. (๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ ๊ฒ ๊ฐ์ 3๊ฐ์ง ์น ๋ธ๋ผ์ฐ์ ๋ง ๋งํฌํ๋ค. ๋๋จธ์ง๋ ๊ตฌ๊ธ์ ๊ฒ์ํ๋ฉด ๋์ฌ๊ฑฐ๋ค. ๐)
๋ฒ์ ์ ๋ง๊ฒ๋, ์ ๋นํ ์์น์ ๋ค์ด๋ก๋๋ฅผ ํด์ฃผ๊ณ ๊ฒฝ๋ก๋ฅผ ๊ธฐ์ตํ๋ค.
Pycharm
์ ์ด์ฉํด์ Python
ํ๋ก์ ํธ๋ฅผ ์์ฑํด๋ณด๋๋ก ํ๊ฒ ๋ค.
Pycharm
์ด ์๋ ๋ค๋ฅธIDE
๋ฅผ ์ฌ์ฉํด๋ ๋ฌธ์ ์์ง๋ง ํ์๋Pycharm
์ด ํธํด์Pycharm
์ ์ด์ฉํด์ ์งํํ ์์
Pycharm
์ ์ต์ด ์คํํ ๊ฒฝ์ฐ New Project
๋ฒํผ์ด ์๋ค. ํด๋น ๋ฒํผ์ ๋๋ฌ๋ ๋๊ณ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ๋ก๋ก ์ด๋ํด์ New Project
๋ฅผ ์งํํด๋ ๋๋ค.
ํด๋น ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ค์ด์ผ๋ก๊ทธ๊ฐ ๋จ๋๋ฐ ์ฌ๊ธฐ์ Virtual Environment
๋ฅผ ์ด์ฉํด์ project
๋ฅผ ๊ตฌ์ฑํ ์์ ์ด๋ค.
Python
์ ์ด์ฉํด์Project
๋ฅผ ๋ง๋ค ๋Virtualenv
๋ฅผ ์ด์ฉํด์ ๋ง๋๋ ๊ฒ์ ๊ถ์ฅํ๋ค๊ณ ํ๋ ๊ฑฐ ๊ฐ์. Global๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ด๋ฐ์ผ๋ฉด ๋ด ์ฝคํจํ๊ฐ ๋ง์ด ์ํํ ์ ์๋ค๊ณ ํ๋๊ฑฐ ๊ฐ์
๋ฐ๋ผ์ Location
์์น๋ฅผ ์ ๋ด๋๊ณ Virtualenv
๋ก ์ ์ ํ์ด ๋์ด์๋์ง ํ์ธํ๋ค.
ํน์ 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)
๊ฐ ๋ฐ ๊ฒ์ด๋ค. ๊ทธ ์ํ์์ ์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ด๋ฐ์์ ์ฐ๋ฉด ๊ฐ์ํ๊ฒฝ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ด๋ฐ๊ณ ์ฌ์ฉํ ์ ์๋ค.
File > Settings
๋ฅผ ๋๋ฌ์ ๋ค์ ์ฐฝ์ ๋์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๋ Project: <ํ๋ก์ ํธ ์์ฑ๋ช
> > Python Interpreter
๋ก ์ง์
ํ๋ค.
์์ผ๋ก ํด๋น ๋ถ๋ถ์ ์ด์ฉํด์ ์์ฝ๊ฒ Python
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ ์์ ์ด๋ค.
ํด๋น ๋ถ๋ถ์์ โ ๋ฒํผ์ ๋๋ฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํด๋ณด๋๋ก ํ์.
์ฐ๋ฆฌ๋ Selenium
์ ์ด์ฉํ ์์ ์ด๊ธฐ ๋๋ฌธ์ Selenium
์ ๊ฒ์์ฐฝ์ ๊ฒ์ํ๊ณ ๋ค์๊ณผ ๊ฐ์ด Install Package
๋ฅผ ๋๋ฌ์ฃผ์.
ํด๋น ๋ฌธ๊ตฌ๊ฐ ๋ฌ๋ค๋ฉด ์ ์์ ์ผ๋ก ์ค์น๊ฐ ๋ ๊ฒ์ด๋ค. (๊ฑฐ์ ์ค๋ฅ๋ ์ผ์ด ์๋ค.)
๊ทธ๋ฆฌ๊ณ virtualenv
ํ๊ฒฝ์ผ๋ก project
๋ฅผ ๋ง๋ค๋ฉด venv
ํด๋๊ฐ ์์ฑ๋๋๋ฐ ํด๋น ํด๋์ ๋ค์๊ณผ ๊ฐ์ด Selenium
์ด ์ค์น๋ ๋ชจ์ต๋ ํ์ธํ ์ ์๋ค.
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 >
(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
์ด ์ถ๋ ฅ๋๋ค๋ฉด ์ ์์ ์ผ๋ก ๋ค์ด๋ก๋๊ฐ ์ด๋ฃจ์ด์ง ๊ฒ์ด๋ค.
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
์ ๋ํด์๋ ์๊ฐ๋ฅผ ํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ๋ค๋ฃฐ ์์ ์ด๋ค.
๋ค๋ค ํ ์คํธ ํ๋ ์ต๊ด์ ๋ค์ด๊ณ ๋ง์ด ์ฌ์ฉํ๊ธธ ๋ฐ๋ผ๋ฉด์ ์ด๋ฒ ํฌ์คํ ์ ๋ง์น๊ฒ ์ต๋๋ค. (๋๋ถํฐ ํ ์คํธ ํ๋ ์ต๊ด์ ๋ค์ด์ ๐ )