1. 네이버 로그인
from selenium import webdriver
#import time
url = 'https://nid.naver.com/nidlogin.login?mode=form&url=https%3A%2F%2Fwww.naver.com'
driver = webdriver.Chrome('C:/TEMP/chromedriver.exe') # 빈 브라우저 띄움
#time.sleep(3)
driver.get(url) # url 접속
driver.find_element_by_id('id').send_keys('___') # id 입력
driver.find_element_by_id('pw').send_keys('___') # pw 입력
#login button
# 1) himl 태그로
login_btn = driver.find_element_by_id('log.login')
login_btn.click()
# 2) xpath
driver.find_element_by_xpath('//*[@id="frmNIDLogin"]/fieldset/input').click()
# 3) javascript
id = 'dlgurtncjswo'
pw = 'Story9490'
driver.execute_script("document.getElementsByName('id')[0].value=\'"+id+"\'")
driver.execute_script("document.getElementsByName('pw')[0].value=\'"+pw+"\'")
driver.find_element_by_xpath('//*[@id="frmNIDLogin"]/fieldset/input').click()
# 4) 보안방지문자 안걸리는 법 (pyperclip))
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import pyperclip
url = 'https://nid.naver.com/nidlogin.login?mode=form&url=https%3A%2F%2Fwww.naver.com'
driver = webdriver.Chrome('C:/TEMP/chromedriver.exe') # 빈 브라우저 띄움
driver.get(url)
# 로그인 버튼을 찾고 클릭합니다
login_btn = driver.find_element_by_class_name('ico_local_login')
login_btn.click()
time.sleep(1)
# id, pw 입력할 곳을 찾습니다.
tag_id = driver.find_element_by_name('id')
tag_pw = driver.find_element_by_name('pw')
tag_id.clear()
time.sleep(1)
# id 입력
tag_id.click()
pyperclip.copy('아이디')
tag_id.send_keys(Keys.CONTROL, 'v')
time.sleep(1)
# pw 입력
tag_pw.click()
pyperclip.copy('비밀번호')
tag_pw.send_keys(Keys.CONTROL, 'v')
time.sleep(1)
# 로그인 버튼을 클릭합니다
login_btn = driver.find_element_by_id('log.login')
login_btn.click()
2. facebook 로그인
from selenium import webdriver
url = 'https://www.facebook.com/?stype=lo&jlou=AfecEGXI9kUlVsVfdZZ_DfRotowp_JN166UM-nF_W_7vQhJkpUNmhNJz-9ePR-ZeylUvWFTsg5KDnnxJzVVt-FYXvfJZ5WTsnOVFpl4wnQ5Rng&smuh=12091&lh=Ac-k3x1B6O_dIjP_'
driver = webdriver.Chrome('C:/TEMP/chromedriver.exe') # 빈 브라우저 띄움
driver.get(url)
driver.find_element_by_id('email').send_keys('___') # id 입력
driver.find_element_by_id('pass').send_keys('___') # password 입력
login_btn = driver.find_element_by_id('u_0_b')
login_btn.click() # 로그인 버튼
3. ktx 티켓
from selenium import webdriver
import time
url = 'http://www.letskorail.com/'
driver = webdriver.Chrome('C:/TEMP/chromedriver.exe') # 빈 브라우저 띄움
time.sleep(3)
driver.get(url)
# < pop-up창 없애기 >
driver.window_handles # 창 개수 확인
driver.window_handles[0] # 메인창
driver.window_handles[1] # 첫 번째 팝업 창
driver.window_handles[2] # 두 번째 팝업 창
driver.switch_to.window(driver.window_handles[1]) # 첫 번째 팝업 창으로 제어권 옮기기
driver.close() # 첫 번째 팝업 창 닫기
driver.switch_to.window(driver.window_handles[1]) # 창이 이제 두개 남았으므로 또 [1]번 째로 이동
driver.close() # 두 번째 팝업 창 닫기
driver.switch_to.window(driver.window_handles[0]) # 메인 창으로 이동
time.sleep(1)
# for문으로 바꿀수 있음
#
#for i in range(0,2):
#driver.switch_to.window(driver.window_handles[1])
#driver.close()
# < 조건 검색 >
## f12 눌러서 도착역 확인
## input tag id = txtGoEnd
xpath = "//input[@id='txtGoEnd']" # //는 이전 경로들을 축약한 뜻
## 기본값이 부산으로 되어있으므로 지우고 작업
driver.find_element_by_xpath(xpath)
driver.find_element_by_xpath(xpath).clear()
driver.find_element_by_xpath(xpath).send_keys("창원\n")
time.sleep(1)
# < 날짜 입력 >
## 달력 버튼 - img, alt - "달력"
xpath2 = "//img[@alt='달력']"
driver.find_element_by_xpath(xpath2).click()
time.sleep(1)
# < 달력 날짜 버튼 누르기 >
driver.switch_to.window(driver.window_handles[1]) # popup 창으로 제어권 넘기고
xpath4="//span[@id='d20200819']" # 200819 날짜 선택
driver.find_element_by_xpath(xpath4).click()
time.sleep(1)
driver.switch_to.window(driver.window_handles[0]) # 제어권 메인 창으로 넘기기
time.sleep(1)
# < 시간 지정 >
## select , id ="time"
xpath5="//select[@id='time']"
driver.find_element_by_xpath(xpath5).click()
driver.find_element_by_xpath(xpath5).send_keys("20") # 20시
time.sleep(1)
# < 승차권 예매 누르기 >
xpath6="//img[@alt='승차권예매']"
driver.find_element_by_xpath(xpath6).click()
time.sleep(1)
# < 예매인지 매진 인지 구분 >
# 예매이면 예약 버튼, 매진 이면 조회 하기
#1. 상태 확인
# alt = "매진" or alt="예약하기"
# '예약하기'가 여러개이므로 tag와 요소로 잡지 못함.
# f12 - 우측마우스 - copy - copy full xpath
# 주소 축약
# 예약
#"/html/body/div[1]/div[3]/div/div[1]/form[1]/div/div[4]/table[1]/tbody/tr[1]/td[6]/a[1]/img"
#"//tbody/tr[1]/td[6]/a[1]/img"
# 매진
#"/html/body/div[1]/div[3]/div/div[1]/form[1]/div/div[4]/table[1]/tbody/tr[1]/td[5]/img"
#"//tbody/tr[1]/td[5]/img"
#"//tbody/tr[1]/td[6]/a[1]/img" -> "//tbody/tr[1]/td[6]//img"
#"//tbody/tr[1]/td[5]/img" -> "//tbody/tr[1]/td[5]//img"
# < 좌석 매진 속성값 뽑기 >
xpath7="//tbody/tr[1]/td[5]//img"
yy = driver.find_element_by_xpath(xpath7).get_attribute('alt')
# < 특실 예매 매크로 >
while True:
if yy == "예약하기":
driver.find_element_by_xpath(xpath7).click()
break
else:
driver.refresh()
# < 일반실 예매 처리 >
xpath8="//tbody/tr[1]/td[6]//img"
yy1=driver.find_element_by_xpath(xpath8).get_attribute('alt')
while True:
if yy1 == "예약하기":
driver.find_element_by_xpath(xpath8).click()
break
else:
driver.refresh()