๐Ÿ Python์œผ๋กœ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑํ•ด๋ณด๊ธฐ

์„œ๋ก 

์ „ ์‹œ๊ฐ„์—๋Š” Selenium ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜์˜€๊ณ , ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๊ตฌ์„ฑ๋œ Selenium ์„ ์ด์šฉํ•ด์„œ ์‹ค์ œ๋กœ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„ ๋ณผ ์˜ˆ์ •์ด๋‹ค. ๋งŒ์•ฝ์— ํ™˜๊ฒฝ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•„์ง ์ฝ์ง€ ์•Š์€ ๋ถ„์€ ์ฝ์œผ๋ฉด์„œ ์ฐฌ์ฐฌํžˆ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•ด๋ณด๊ธธ ๋ฐ”๋ž€๋‹ค.

๊ทธ๋Ÿผ ๋ฐ”๋กœ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž!

ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

OS : Window 10 Pro
IDE : Pycharm Ultimate Edition
Python SDK : Python 3.8 (๋งํฌ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์„ค์น˜ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.)
Web browser : Google Chrome 90 (Chrome ๊ถŒ์žฅ)
Python Environment : virtualenv (pip)

๋ณธ๋ก 

๋จผ์ € ์ž์‹ ์ด Selenium ์ฝ”๋“œ ์ž‘์„ฑ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” IDE๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์ „์— ๋งŒ๋“ค์—ˆ๋˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์ผ ๋‹ค. (ํ•„์ž๋Š” PyCharm ์„ ์ด์šฉํ•œ๋‹ค.)

์—ฌ๊ธฐ์„œ ์ž ๊น!๐Ÿ–
์ž‘์„ฑ์— ์•ž์„œ์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” Selenium ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ ์งš๊ณ  ๋„˜์–ด๊ฐ€ ๋ณผ ์˜ˆ์ •์ด๋‹ค.

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait


def main():
    # ์ž์‹ ์ด ์‚ฌ์šฉํ•˜๋Š” ์›น๋“œ๋ผ์ด๋ฒ„ ๊ฐ€์ ธ์˜ค๊ธฐ
    driver = webdriver.Chrome("C:/Users/junsugi/Desktop/chromedriver.exe")
    # get ๋ฉ”์„œ๋“œ๋Š” ํ•ด๋‹น URL๋กœ ์ด๋™ํ•œ๋‹ค.
    driver.get("https://google.com")
    # id๋กœ element ์ฐพ๊ธฐ
    driver.find_element_by_id("id")
    # class๋กœ ํ•˜๋‚˜์˜ element ์ฐพ๊ธฐ
    driver.find_element_by_class_name("className")
    # class๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ element ์ฐพ๊ธฐ
    driver.find_elements_by_class_name("className")
    # class ์ด์™ธ์—๋„ name, tag name ๋“ฑ ๋‹ค์–‘ํ•œ ์š”์†Œ๋กœ element๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.
    # ํ•„์š”ํ•œ ์ƒํ™ฉ์— ๋”ฐ๋ผ์„œ ์ง„ํ–‰ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

    # xpath๋กœ element ์ฐพ๊ธฐ (๊ธ€์—์„œ ์ž์„ธํžˆ ๋‹ค๋ฃฐ ์˜ˆ์ •)
    driver.find_element_by_xpath("xpath")
    # ํŽ˜์ด์ง€ ๋กœ๋”ฉ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    wait = WebDriverWait(driver, 5)

์ƒ๊ฐ๋‚˜๋Š”๊ฑด ์ด์ •๋„ ๋ฐ–์— ์—†๋‹ค. ์ถ”๊ฐ€๋กœ ๋„์›€์ด ๋ ๋งŒํ•œ ๋‚ด์šฉ์ด ์ƒ๊ฐํ•˜๋ฉด ์ ์–ด๋„ฃ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ณดํ†ต Selenium ์ฝ”๋“œ๋Š” ์ž์‹ ์ด ๊ฐœ๋ฐœํ•œ ์›น ์‚ฌ์ดํŠธ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์šฐ์„  ์‹œ์ค‘์— ๋‚˜์™€์žˆ๋Š” ์œ ๋ช… ์‚ฌ์ดํŠธ์—์„œ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€๋ฅผ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ €๋Š” LostArk ๊ฒŒ์ž„ ํ™ˆํŽ˜์ด์ง€์—์„œ ์ €์˜ ๊ฒŒ์ž„ ์•„์ด๋””์˜ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ์„  ๋กœ์ŠคํŠธ์•„ํฌ ๊ณต์‹ํ™ˆํŽ˜์ด์ง€์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ ๋Š” ๊ฐœ๋ฐœ์ž ๋„๊ตฌ(F12) ๋ฅผ ์ผœ์„œ ์ž์‹ ์ด ์ฐพ์•„์•ผ ํ•˜๋Š” element ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ „ํˆฌ์ •๋ณด์‹ค์ด๋ผ๋Š” ๋ฒ„ํŠผ์˜ element๋ฅผ ์ฐพ๊ฒ ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” element ์˜ ์†์„ฑ์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์ผœ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์•„์ด์ฝ˜์ด ๋ณด์ž…๋‹ˆ๋‹ค.

ํ•ด๋‹น ์•„์ด์ฝ˜์„ ๋ˆ„๋ฅด๊ณ  ๋‚ด๊ฐ€ ์›ํ•˜๋Š” element๋ฅผ ํด๋ฆญํ•˜๋ฉด ๊ณง๋ฐ”๋กœ ๊ฐœ๋ฐœ์ž๋„๊ตฌ์—์„œ ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ํŒŒ๋ž€์ƒ‰์œผ๋กœ ์„ ํƒํ•ด์ค๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์— ๋‹จ์ถ•๊ธฐ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ Ctrl + Shite + C ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์•„์ด์ฝ˜์„ ๋ˆ„๋ฅด์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ Select ๋ชจ๋“œ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ ๋‚˜์„œ element ๋ฅผ ํ™•์ธํ•ด๋ดค๋”๋‹ˆ ID ๊ฐ’๋„ ์—†๊ณ  Class, Name ๊ฐ’์ด ์ „๋ถ€ ์—†์–ด์„œ ์œ„์—์„œ ๋ฐฐ์šด ์ฝ”๋“œ๋กœ๋Š” element ๋ฅผ ์ฐพ์„ ์ˆ˜๊ฐ€ ์—†๋Š”๋ฐ, ์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด xPath ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ xPath๋ฅผ ์ด์šฉํ•ด์„œ ๋‹ค์Œ์˜ element ๋ฅผ ์ฐพ์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

character = driver.find_element_by_xpath("//nav[@class='nav']//ul//a[@href='/Profile/Character']")
character.click()

์™œ ์ €๋ ‡๊ฒŒ xPath ๊ฐ€ ์ž…๋ ฅ์ด ๋˜์—ˆ๋Š”์ง€ html ์„ ํ†ตํ•ด ์‚ดํŽด๋ณด์ž.

์ „ํˆฌ์ •๋ณด์‹ค element๊ฐ€ ๋“ค์–ด์žˆ๋Š” ์ฒซ ์‹œ์ž‘ ํƒœ๊ทธ๊ฐ€ div ๋กœ ๋‚˜์™€์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ํƒ€๊ณ  ๋“ค์–ด๊ฐ€๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์ง€๋งŒ ๋‚˜๋Š” nav ํƒœ๊ทธ๊ฐ€ ์ด๊ณณ์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š”๊ฑธ ๊ฐœ๋ฐœ์ž๋„๊ตฌ์—์„œ ๊ฒ€์ƒ‰ํ•ด์„œ ์•Œ์•˜๊ณ  nav ๋ถ€ํ„ฐ ํƒ€๊ณ  ๋“ค์–ด๊ฐ€๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ํƒํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํ™•์‹คํ•˜๊ฒŒ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” nav ๋กœ ๊ฒ€์ƒ‰๋˜๊ธธ ์›ํ–ˆ๊ณ  ๋”ฐ๋ผ์„œ class ๋ฅผ ๋ช…์‹œํ•ด์คฌ๋‹ค.

๋”ฐ๋ผ์„œ //nav[@class='nav'] ๋กœ xPath ์˜ ์Šคํƒ€ํŠธ๋ฅผ ๋Š์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  nav ๋ฐ‘์— ์กด์žฌํ•˜๋Š” ํƒœ๊ทธ๊ฐ€ h2 ์™€ ul ์ด ์žˆ๋Š”๋ฐ h2 ๋Š” ์šฐ๋ฆฌ์˜ ๋ชฉ์ ๊ณผ ์ƒ๊ด€ ์—†๋Š” ํƒœ๊ทธ๋‹ˆ๊นŒ ๋ฌด์‹œํ•˜๊ณ  ul ํƒœ๊ทธ๋ฅผ ์—ด์–ด๋ณด์ž. ๊ทธ๋Ÿฌ๋ฉด ๋งŽ์€ ๊ฐœ์ˆ˜์˜ li ๋“ค์ด ์žˆ๋Š”๋ฐ ์šฐ์„  ์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜๋ฉด //nav//ul ์ด๋ ‡๊ฒŒ ์ž‘์„ฑ์ด ๋œ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€๋Š” ๊ทธ๋ƒฅ ์†์‰ฝ๊ฒŒ ๋”ฐ๋ผํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ๋‹ค์Œ์— ์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ์ธ๋ฐ, li ๋ฅผ ํŠน์ •ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” selector ๊ฐ€ ์—†๋‹ค. ๊ทธ๋ž˜์„œ ํ•„์ž๊ฐ€ ์ƒ๊ฐํ•œ ๋ถ€๋ถ„์€ a ํƒœ๊ทธ์— href ๊ฐ’์œผ๋กœ ์ „ํˆฌ์ •๋ณด์‹ค element ๋ฅผ ์ฐพ๋Š”๋ฐฉ๋ฒ•์„ ๋– ์˜ฌ๋ ธ๋‹ค. ๊ทธ๋ž˜์„œ xPath ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ ํž ์ˆ˜ ์žˆ๋‹ค.

//nav[@class='nav']//ul//a[@href='/Profile/Character']

๋”ฐ๋ผ์„œ ul ํƒœ๊ทธ ๋ฐ‘์— a ํƒœ๊ทธ๋ฅผ ์ฐพ๋Š”๋ฐ href ๋‚ด์šฉ์ด /Profile/Character ์ธ a ํƒœ๊ทธ๋ฅผ ์ฐพ๊ฒ ๋‹ค๋Š” ์˜๋ฏธ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•œ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๋ฌธ๋ฒ•์ด ๋‚˜์˜ค๋Š”๋ฐ ํƒœ๊ทธ์ด๋ฆ„[@์…€๋ ‰ํ„ฐ='๊ฐ’'] ์œผ๋กœ ์ ์œผ๋ฉด ํ•ด๋‹น element ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. ์…€๋ ‰ํ„ฐ์—๋Š” id, class, name, href ๋“ฑ ๋‹ค์–‘ํ•œ ๊ฐ’์ด ์ ํž ์ˆ˜ ์žˆ๋Š”๋ฐ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ตฌ๊ธ€์— ๊ฒ€์ƒ‰ํ•ด๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ xPath ๋ฅผ ์ตœ์ข…์ ์œผ๋กœ ์ ์–ด๋ณด๋ฉด ๋‹ค์Œ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ ํž ์ˆ˜ ์žˆ๋‹ค.

character = driver.find_element_by_xpath("//nav[@class='nav']//ul//a[@href='/Profile/Character']")
character.click() # a ํƒœ๊ทธ ํด๋ฆญํ•˜๊ธฐ

find_elements_by_xpath ๊ฐ€ ์žˆ๊ณ  find_element_by_xpath ๊ฐ€ ์žˆ๋Š”๋ฐ ์šฐ๋ฆฌ๋Š” ์ „ํˆฌ์ •๋ณด์‹ค ํ•˜๋‚˜๋งŒ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— element ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ํ˜น์‹œ ๋ณต์ˆ˜์˜ element ๋ฅผ ์ฐพ์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” elements ๋กœ ๊ฒ€์ƒ‰ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ํ•˜๋ฉด ์ „ํˆฌ์ •๋ณด์‹ค๋กœ ํŽ˜์ด์ง€๊ฐ€ ์ด๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋‚ด ๋‹‰๋„ค์ž„์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ •๋ณด๋ฅผ print ํ•ด๋ณด๋Š” ๋ถ€๋ถ„๊นŒ์ง€ ์ง„ํ–‰ํ•ด๋ณด์ž. xpath ๋ถ€๋ถ„์ด ์„ค๋ช…์ด ๊ธธ์–ด์ ธ์„œ ๊ทธ๋Ÿฌ์ง€ ๋‚˜๋จธ์ง€๋Š” ๊ธˆ๋ฐฉ์ด๋‹ค.

๋”ฐ๋ผ์„œ ๋‹ค์‹œ html ์„ ๋ถ„์„ํ•ด์•ผ ๋˜๋Š”๋ฐ ๋‚ด๊ฐ€ ๊ฐ’์„ ์ž…๋ ฅํ•ด์•ผ ๋˜๋Š” input ํƒœ๊ทธ element ๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค.

๋กœ๋ฐ์•„์›ƒ ใ„ทใ„ท ๐Ÿ’โ€โ™‚๏ธ

๋‹คํ–‰(?)์Šค๋Ÿฝ๊ฒŒ๋„ input ํƒœ๊ทธ์—๋Š” ๋ญ๊ฐ€ ๋งŽ์ด ์ ํ˜€์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๋ถ€๋ถ„๋„ class ๋ฅผ ์ด์šฉํ•ด์„œ element ๋ฅผ ์ฐพ์•„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    input = driver.find_element_by_class_name("input--profile-search")
    input.send_keys("์ €๊ฑฐ์ข€")
    submit = driver.find_element_by_class_name("button--profile-search")
    submit.click()

send_keys ๋Š” input ํƒœ๊ทธ์— ๊ฐ’์„ ๋„ฃ์„ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. (์ž์„ธํ•œ ๋ถ€๋ถ„์€ ์ถ”ํ›„์— ์„ค๋ช…)
click() ๋ฉ”์„œ๋“œ๋Š” ๋ฒ„ํŠผ์„ ํด๋ฆญํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฒ€์ƒ‰๋œ ๊ฐ’์„ print ํ•ด์„œ console์— ์ฐ์–ด๋ณด๋ฉด ๋๋‚˜๋Š”๋ฐ, ํ•ด๋‹น ๋ถ€๋ถ„์€ ์ „๋ถ€ ๋‹ค ๋˜‘๊ฐ™๊ณ  .text ๋ฉ”์„œ๋“œ๋งŒ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‹‰๋„ค์ž„ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    name = driver.find_element_by_class_name("profile-character-info__name")
    print(name.text)

์ž‘์•„์„œ ๋ณด์ผ์ง€ ๋ชจ๋ฅด๊ฒ ๋Š”๋ฐ console ์ฐฝ์— '์ €๊ฑฐ์ข€' ์ด ๋œฌ ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด ๊ณผ์ •์„ ์ „์ฒด ์ฝ”๋“œ๋กœ ์ ์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

import time

from selenium import webdriver

def print_hi():
    # ์ž์‹ ์ด ์‚ฌ์šฉํ•˜๋Š” ์›น๋“œ๋ผ์ด๋ฒ„ ๊ฐ€์ ธ์˜ค๊ธฐ
    driver = webdriver.Chrome("C:/Users/junsugi/Desktop/chromedriver.exe")
    # get ๋ฉ”์„œ๋“œ๋Š” ํ•ด๋‹น URL๋กœ ์ด๋™ํ•œ๋‹ค.
    driver.get("https://lostark.game.onstove.com/Main")
    character = driver.find_element_by_xpath("//nav[@class='nav']//ul//a[@href='/Profile/Character']")
    character.click()

    input = driver.find_element_by_class_name("input--profile-search")
    input.send_keys("์ €๊ฑฐ์ข€")
    submit = driver.find_element_by_class_name("button--profile-search")
    submit.click()

    name = driver.find_element_by_class_name("profile-character-info__name")
    print(name.text)

    # driver session ์ข…๋ฃŒ
    driver.close()

if __name__ == '__main__':
    print_hi()

๊ฒฐ๋ก 

์ตœ๋Œ€ํ•œ ์‰ฝ๊ฒŒ ์„ค๋ช…์„ ํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ๋ญ”๊ฐ€ ์ค‘๊ตฌ๋‚œ๋ฐฉ ์„ค๋ช…ํ•œ ๊ฒƒ ๊ฐ™์•˜๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์„ค๋ช…ํ•œ ๋ถ€๋ถ„์€ Selenium ์˜ ๊ธฐ์ดˆ์˜ ๊ธฐ์ดˆ๋งŒ ์„ค๋ช…ํ–ˆ๋‹ค. ๋‚˜๋„ ์•„์ง ์ „๋ฌธ์ ์ธ ์ง€์‹์„ ๊ฐ€์ง„๊ฑด ์—†์ง€๋งŒ ์กฐ๊ธˆ ๋” ์•Œ์•„์•ผ ํ•  ๋ถ€๋ถ„๋“ค์ด ์กด์žฌํ•œ๋‹ค.

๋Œ€๊ฒŒ ํŽ˜์ด์ง€ ๋กœ๋”ฉ์ด ๋๋‚˜๊ธฐ๋„ ์ „์— element ๋ฅผ ์ฐพ๋Š” ๊ฒฝ์šฐ ์—๋Ÿฌ๊ฐ€ ๋œจ๋Š”๋ฐ ๊ทธ ๋•Œ ํŽ˜์ด์ง€ ๋กœ๋”ฉ์„ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ element ๋ฅผ ์ฐพ๋Š” ์•„์ฃผ ์ข‹์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๋„ ์žˆ๋‹ค.

์ด๋Ÿฐ ๋ถ€๋ถ„๋“ค์€ ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ๋‹ค๋ค„๋ณด๋„๋ก ํ•  ์˜ˆ์ •์ด๋‹ค.

๋‹ค์Œ ํฌ์ŠคํŒ…๋„ ์žฌ๋น ๋ฅด๊ฒŒ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ