#!/usr/bin/env python3 # -*- coding: utf-8 -*- import os import sys import time import traceback from time import sleep from selenium import webdriver from bs4 import BeautifulSoup as bs from selenium.webdriver.chrome.options import Options def wait_for_load(cond, driver, time_out=50, time_sleep=.5): cnt = time_out / time_sleep # max try while cond(driver) and cnt > 0: sleep(time_sleep) cnt -= 1 def login_cond(driver): return '出行情况报告' not in driver.page_source and '密码不正确' not in driver.page_source and '账号已删除' not in driver.page_source def iframe_cond(driver): tmp = bs(driver.page_source, 'html.parser').find(id='formIframe') return tmp is None def load_cond(driver): return '今日健康情况' not in driver.page_source def login(username, password): driver.get( "https://id.tsinghua.edu.cn/do/off/ui/auth/login/form/a585295b8da408afdda9979801383d0c/0?/fp/") driver.find_element_by_id("i_user").send_keys(username) driver.find_element_by_id("i_pass").send_keys(password) driver.find_element_by_link_text(u"登录").click() wait_for_load(login_cond, driver) return '出行情况报告' in driver.page_source def submit(): driver.get('https://thos.tsinghua.edu.cn/fp/view?m=fp#from=hall&serveID=b44e2daf-0ef6-4d11-a115-0eb0d397934f&act=fp/serveapply') wait_for_load(iframe_cond, driver) sleep(5) js = "$('#commit').click()" driver.execute_script(js) if __name__ == '__main__': try: if not os.path.exists('log'): os.makedirs('log') username, password = sys.argv[-2], sys.argv[-1] chrome_options = Options() # comment for looking its behavior chrome_options.add_argument("--headless") driver = webdriver.Chrome(chrome_options=chrome_options) if login(username, password): submit() filename = 'log/%f.png' % time.time() print('success:' + filename) driver.get_screenshot_as_file(filename) else: print('fail') except: print(traceback.format_exc()) finally: driver.quit()