😀 네이버 블로그에 작성했던 후기
📅 온라인 라이브 수업 : 2024.02.27 PM 20시 ~ 23시
📍 복습 vod 시청 : 2024.03.01
시작 전, 궁금했거나 알고 싶었던 내용
1. 이전 과제에 대한 피드백이 있는지?
2. 테스트 시나리오, 테스트 케이스, 테스트 스크립트의 개념을 집고 가는지?
3. 다양한 메소드가 포함되어 있는지?
학습내용
1. find_element
2. element attribute
3. Selenium Control
4. ActionChain
5. Test Scenario, Test Case, Test Script
웹 엘리먼트 찾기
1. 웹 페이지 접속
2. 개발자 도구 진입
3. 원하는 요소의 태그, 속성을 파악 (인스펙터 활용)
4. Selenium으로 태그, 속성 지정 후 제어하기
우선, 필요한 모듈을 import 해줘야 한다.
# n초만큼 무조건 기다리기
import time
# 웹을 자동화 하기 위함
from selenium import webdriver
# 엘리먼트를 찾기 위함
from selenium.webdriver.common.by import By
# 키보드 사용을 위함
from selenium.webdriver.common.keys import Keys
# 크롬 브라우저를 사용할 것이라 선언하고 드라이버 객체 생성
driver = webdriver.Chrome()
# 'url' 접속할 웹 사이트 주소를 입력
driver.get('url')
...
...
...
# 웹드라이버 강제 종료
driver.quit()
By 지정자로 찾을 수 있는 속성
1. CSS_SELECTOR
2. CLASS_NAME
3. ID
4. XPATH
5. LINK_TEXT
6. NAME
7. PATIAL_LINK_TEXT
8. TAG_NAME
1~4번을 가장 많이 사용하게 될 것이다.
1번 4번 2가지는 원하는 태그 선택 상태에서 마우스 우클릭 > copy 진입 하면된다.
웹 엘리먼트 속성 다루기
- 속성값 get_attribute()
- 문자 데이터 text
- 화면상 위치 location
- 엘리먼트 크기 size
Selenium 코드 제어하기
대기의 종류
- 묵시적 대기
- 명시적 대기
- 무조건 대기
import time
from selenium import webdriver
# 명시적 대기를 위함
frome selenium.webdriver.support.ui import WebDriverWait
frome selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get('url')
# 묵시적 대기
driver.implicitly_wait(n)
# 명시적 대기
elem = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, '속성값')))
# 무조건 대기
time.sleep(n)
유저 액션 자동화
1. 키보드 마우스 제어
- clear()
- click()
- double_click()
- click_and_hold()
- move_to_element()
- key_down()
- key_up()
- send_keys()
- send_keys_to_element()
...
"Acrion Chain"
이름에서 알 수 있듯이 사슬 처럼 이어서 사용가능
충분히 사용가능하지만, pyautogui가 훨씬 코드적으로 깔끔하다.
(Action chain의 경우 최소 4줄 -> pyautogui는 1줄로 가능)
# Action Chain 키보드, 마우스 제어를 위함
from selenium.webdriver.common.action_chains import ActionChains as AC
actions = AC(driver)
{마우스, 키보드 제어 코드}
actions.perform() # 마지막에 무조건 작성해줘야 한다. 그래야 동작을 한다.
2. 웹 페이지 스크롤
# execute_script 사용 (js 사용)
# 100px 스크롤
driver.execute_script('window.scrollTo(0,100);')
# 맨 아래까지 스크롤 (웹 페이지 본문 길이를 가져오기 때문)
driver.execute_script('window.scrollTo(0,document.body.scrollHeight);')

강의후기
1. 해당 강의를 신청한 이유, 가장 궁금하고 해보고 싶던 부분이 진행되어 좋았습니다.
2. 구두 설명만 하는게 아닌 실제 코드 작성 동작을 보여주고, 실습 시간이 있어 좋았습니다.
3. 과제가 해당 주차에 진행된 내용을 제대로 사용할 수 있는것 같습니다.
