#!/usr/bin/python3
# -*- coding: utf-8 -*-
import requests
import base64
from selenium import webdriver
import re
from selenium.webdriver import ActionChains
import time

driver = webdriver.Chrome()
def login():
    driver.get('https://kyfw.12306.cn/otn/resources/login.html')
    driver.find_element_by_link_text("账号登录").click()

    driver.find_element_by_xpath('//*[@id="J-userName"]').send_keys("12020202020")
    driver.find_element_by_xpath('//*[@id="J-password"]').send_keys("12020202020")
    image_url=driver.find_element_by_xpath('//*[@id="J-loginImg"]').get_attribute('src')
    get_image(image_url)


def get_image(image_url):
    #base64图片解码,并保存图征
    base4_url=image_url.split(',')[-1]
    img_data=base64.b64decode(base4_url)#转成二进制
    with open('yzm.jpg',mode='wb') as f:
        f.write(img_data)
        
def yzm_result():
    image_data=open('yzm.jpg',mode='rb')
    file={'pic_xxfile':image_data}
    res=requests.post(url='http://littlebigluo.qicp.net:47720',files=file)
    result=[]
    for i in re.findall('<B>(.*?)</B>',res.text)[0].split(' '):
        result.append(int(i))
    print(result)
    image_data.close()
    return result

def click_login(result):
    img_element=driver.find_element_by_xpath('//*[@id="J-loginImg"]')
    action=ActionChains(driver)
    for i in result:
        MAP=[[-105,-20],[-35,-20],[40,-20],[110,-20],[-105,50],[-35,50],[40,50],[110,50]]
        action.move_to_element(img_element).move_by_offset(MAP[i-1][0],MAP[i-1][1]).click()
        time.sleep(1)
    action.perform()
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="J-login"]').click()
    driver.implicitly_wait(10)

def run():
    login()
    result=yzm_result()
    click_login(result)
    
if __name__ == '__main__':    
    run()