from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def get_driver():
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--window-size=1280x1696')
chrome_options.add_argument('--user-data-dir=/tmp/user-data')
chrome_options.add_argument('--hide-scrollbars')
chrome_options.add_argument('--enable-logging')
chrome_options.add_argument('--log-level=0')
chrome_options.add_argument('--v=99')
chrome_options.add_argument('--single-process')
chrome_options.add_argument('--data-path=/tmp/data-path')
chrome_options.add_argument('--ignore-certificate-errors')
chrome_options.add_argument('--homedir=/tmp')
chrome_options.add_argument('--disk-cache-dir=/tmp/cache-dir')
chrome_options.add_argument('user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36')
chrome_options.binary_location = "/opt/python/bin/headless-chromium"
driver = webdriver.Chrome("/opt/python/bin/chromedriver", chrome_options=chrome_options)
return driver
def auto_booking(b_url):
driver = get_driver()
driver.get("<https://www.itlo.org/login>") # 도서제작 봉사활동 로그인 페이지
driver.implicitly_wait(10) # 접속하는 동안 대기(최대 3초)
login_info = {'id': '********@gmail.com', 'pw': '*********'}
driver.find_element_by_name('email').send_keys(login_info['id']) # 아이디
driver.find_element_by_name('pwd').send_keys(login_info['pw']) # 비밀번호
driver.find_element_by_id('sub').click() # 로그인
driver.get(b_url)
driver.find_element_by_xpath('//*[@id="container"]/div[1]/div/table/tbody/tr[4]/td/div[3]/div/div/a').click()
driver.switch_to.window(driver.window_handles[1]) # 새 창으로 이동
# 제작 가능한 페이지가 없는 경우 : "페이지가 없어요 다른 책을 선택해주세요."
# 이미 작업 중인 경우 : "현재 입력중인 페이지가 있습니다 돌아가시겠습니까?""
page_text = driver.find_element_by_xpath('/html/body/table[1]/tbody/tr').text
print(page_text)
if "페이지가 없어요" in page_text:
driver.find_element_by_xpath('/html/body/table[1]/tbody/tr/td/input').click() # '닫기' 클릭
driver.switch_to.window(driver.window_handles[0]) # 기존 창으로 이동
driver.close()
return "False"
elif "현재 입력중인 페이지가 있습니다" in page_text:
driver.find_element_by_xpath('/html/body/table[1]/tbody/tr/td/input[1]').click() # '닫기' 클릭
driver.switch_to.window(driver.window_handles[0]) # 기존 창으로 이동
driver.close()
return "False2"
else: # 제작 가능한 경우
driver.find_element_by_xpath('/html/body/table[1]/tbody/tr[2]/td/input[2]').click() # '진행하기' 클릭
driver.switch_to.window(driver.window_handles[0]) # 기존 창으로 이동
driver.close()
return "True"