반응형
[참조] https://velog.io/@kjh03160/Selenium
파이썬, 셀레니움 기능을 클래스로 만드는 예
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
class Driver:
def __init__(self):
options = webdriver.ChromeOptions()
options.add_argument('headless')
options.add_argument(
"user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36")
self.driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
def __call__(self):
return self.driver
def get_url(self, url): # 새 창으로 url 열기
self.driver.get(url)
def get_default_frame(self): # default 프레임 이동
while True:
try:
self.driver.switch_to_default_content()
return
except:
print('default frame 이동')
pass
def get_frame(self, name): # 특정 프레임 이동
while True:
try:
self.driver.switch_to_frame(name)
break
except:
self.get_default()
print(name, 'frame 이동')
continue
def find_by_xpath(self, xpath): # Xpath로 단일 요소 찾기
return WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located((By.XPATH, xpath)))
def find_by_class(self, class_name): # class name으로 단일 요소 찾기
return WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located((By.CLASS_NAME, class_name)))
def find_by_tag(self, tag): # tag로 단일 요소 찾기
return WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located((By.TAG_NAME, tag)))
def find_by_name(self, name): # name으로 단일 요소 찾기
return WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located((By.NAME, name)))
def find_all_by_class(self, class_name): # class name으로 모든 요소 찾기
return WebDriverWait(self.driver, 10).until(
EC.presence_of_all_elements_located((By.TAG_NAME, class_name)))
def find_all_by_tag(self, tag): # tag로 모든 요소 찾기
return WebDriverWait(self.driver, 10).until(
EC.presence_of_all_elements_located((By.TAG_NAME, tag)))
def find_all_by_name(self, name): # name으로 모든 요소 찾기
return WebDriverWait(self.driver, 10).until(
EC.presence_of_all_elements_located((By.NAME, name)))
def find_all_by_tag_with_obj(self, obj, name): # tag으로 모든 요소 찾기
return WebDriverWait(obj, 20).until(
EC.presence_of_all_elements_located((By.TAG_NAME, name)))
def find_by_tag_with_obj(self, obj, name): # tag으로 요소 찾기
return WebDriverWait(obj, 20).until(
EC.presence_of_element_located((By.TAG_NAME, name)))
def find_by_link(self, text):
return WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located((By.LINK_TEXT, text)))
def click(self, btn):
self.driver.execute_script("arguments[0].click();", btn)
def close(self):
self.driver.close()
반응형
'웹 크롤링, 스크래핑' 카테고리의 다른 글
셀레니움, Firefox 웹드라이버 다운로드 사이트 (0) | 2022.07.28 |
---|---|
파이썬, 셀레니움 특정 요소 기다리기 & 자바스크립트로 로그인하기 (0) | 2022.07.27 |
파이썬, 셀레니움 자바스크립트로 로그인 아이디 비밀번호 입력 예제 (0) | 2022.07.22 |
파이썬, 셀레니움 캘린더 선택 예제 (0) | 2022.07.21 |
파이썬, 셀레니움 요소 선택 에러 대응 참고 (0) | 2022.07.20 |