- #!/usr/bin/env python
- # -*- encoding:utf-8 -*-
- '''
- Created on 2014年12月30日
- @author: liujichao
- '''
- import sys
- import logging
- from splinter import Browser
- import time
- logging.getLogger().setLevel(logging.ERROR)
- reload(sys)
- sys.setdefaultencoding('utf-8') # @UndefinedVariable
- if __name__ == '__main__':
- browser = Browser()
- browser.visit("https://kyfw.12306.cn/otn/login/init")
- browser.find_by_id("username").fill("用户名")
- browser.find_by_id("password").fill("密码")
- browser.find_by_id("randCode").click()
- while len(browser.find_by_id("randCode").value)<4:
- time.sleep(1.5)
- pass
- browser.find_by_id("loginSub").click()
- while browser.url !="https://kyfw.12306.cn/otn/index/initMy12306":
- print browser.url
- time.sleep(1)
- pass
- browser.visit('https://kyfw.12306.cn/otn/leftTicket/init')
- #browser.fill('kw', 'splinter - python acceptance testing for web applications')
- #browser.execute_script("$('body').empty()")
- #print browser.find_by_id("login_user")
- #browser.find_by_id("login_user").click()
- #print browser.cookies()
- browser.find_by_id("fromStationText").click()
- browser.execute_script('''$(\\"#nav_list3\\").click();
- $(\\"a.cityflip:nth-child(1)\\").click();
- $(\\"#ul_list3 > li:nth-child(21)\\").click();
- ''')
- browser.find_by_id("toStationText").click()
- browser.execute_script('''$(\\"#ul_list1 > li:nth-child(1)\\").click();
- ''')
- browser.find_by_value("G").check()
- #browser.find_by_id("train_date").click()
- #time.sleep(10)
- while True:
- browser.execute_script('''$("#train_date").val("2015-02-25");''')
- browser.find_by_id("query_ticket").click()
- browser.execute_script("CLeftTicketUrl = 'leftTicket/queryT?_r="+str(time.time())+"';")
- browser.execute_script('''$("#train_date").val("2015-02-25");''')
- warnAlert=browser.find_by_id("content_defaultwarningAlert_id")
- if len(warnAlert)!=0:
- browser.find_by_id("qd_closeDefaultWarningWindowDialog_id").click()
- pass
- browser.execute_script('''
- iflagt=false;
- $('#queryLeftTable tr').each(function () {
- trId = $(this).attr('id');
- if (/^ticket/.test(trId)) {
- tid=trId.replace("ticket_","");
- tranCode=$("#"+trId+"_train").find("a").text()
- if("G564,G510,G672,G6742,G572,G514,".indexOf(tranCode+",")!=-1){
- //二等座位
- ZEtxt=$("#ZE_"+tid).text();
- zcount=0;
- try
- {
- zcount=parseInt(ZEtxt)
- } catch (e) {zcount=0;}
- console.log(ZEtxt);
- if(ZEtxt=="有" || zcount>1){
- $(this).find(".btn72").click();
- iflagt=true;
- return false;
- }
- }
- }
- });
- ''')
- if browser.evaluate_script("iflagt;"):
- break
- pass
- else:
- print "无"
- pass
- time.sleep(3)
- pass
- while browser.url !="https://kyfw.12306.cn/otn/confirmPassenger/initDc":
- print browser.url
- time.sleep(1)
- pass
- browser.find_by_id("gd").click()
- browser.find_by_id("normalPassenger_0").check()
- browser.find_by_id("normalPassenger_24").check()
- browser.find_by_id("randCode").click()
- while len(browser.find_by_id("randCode").value)<4:
- time.sleep(1)
- pass
- browser.is_element_not_present_by_id(id, wait_time=None)
- while not browser.find_by_id("checkticketinfo_id").visible:
- time.sleep(0.5)
- pass
- browser.find_by_id("qr_submit_id").click()
- #browser.find_by_id("fromStation").fill("BXP")
- #browser.find_by_id("train_date").fill("BXP")
- #browser.find_by_id("query_ticket").click()
- #print browser.html
- print browser.cookies.all()
- pass
- #该片段来自于http://www.codesnippet.cn/detail/3112201411460.html
来源: http://www.codesnippet.cn/detail/3112201411460.html