forked from stay-youbg/python12306
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.py
136 lines (114 loc) · 3.53 KB
/
test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author: liuyw
"""
from splinter.browser import Browser
from time import sleep
import traceback
import time, sys
class huoche(object):
"""docstring for huoche"""
driver_name=''
executable_path=''
#用户名,密码
username="username"
passwd ="password"
# cookies值得自己去找, 下面两个分别是上海, 太原南
starts = "%u5317%u4EAC%2CBJP"
ends = "%u4E34%u6C82%2CLVK"
# 时间格式2018-01-19
dtime = "2018-02-12"
# 车次,选择第几趟,0则从上之下依次点击
order = 0
###乘客名
users = ["XXX"]
##席位
xb = "硬座"
pz="成人票"
"""网址"""
ticket_url = "https://kyfw.12306.cn/otn/leftTicket/init"
login_url = "https://kyfw.12306.cn/otn/login/init"
initmy_url = "https://kyfw.12306.cn/otn/index/initMy12306"
buy="https://kyfw.12306.cn/otn/confirmPassenger/initDc"
login_url='https://kyfw.12306.cn/otn/login/init'
def __init__(self):
self.driver_name='chrome'
def login(self):
self.driver.visit(self.login_url)
self.driver.fill("loginUserDTO.user_name", self.username)
# sleep(1)
self.driver.fill("userDTO.password", self.passwd)
print ("等待验证码,自行输入...")
while True:
if self.driver.url != self.initmy_url:
sleep(1)
else:
break
def start(self):
self.driver=Browser(driver_name=self.driver_name)
self.driver.driver.set_window_size(1400, 1000)
self.login()
# sleep(1)
self.driver.visit(self.ticket_url)
try:
print ("购票页面开始...")
# sleep(1)
# 加载查询信息
self.driver.cookies.add({"_jc_save_fromStation": self.starts})
self.driver.cookies.add({"_jc_save_toStation": self.ends})
self.driver.cookies.add({"_jc_save_fromDate": self.dtime})
self.driver.reload()
count=0
if self.order!=0:
while self.driver.url==self.ticket_url:
self.driver.find_by_text("查询").click()
count += 1
print("循环点击查询... 第 %s 次" % count)
# sleep(1)
try:
self.driver.find_by_text("预订")[self.order - 1].click()
except Exception as e:
print(e)
print("还没开始预订")
continue
else:
while self.driver.url == self.ticket_url:
self.driver.find_by_text("查询").click()
count += 1
print("循环点击查询... 第 %s 次" % count)
# sleep(0.8)
try:
for i in self.driver.find_by_text("预订"):
i.click()
sleep(1)
except Exception as e:
print(e)
print("还没开始预订 %s" % count)
continue
print("开始预订...")
# sleep(3)
# self.driver.reload()
sleep(1)
print('开始选择用户...')
for user in self.users:
self.driver.find_by_text(user).last.click()
print("提交订单...")
sleep(1)
# self.driver.find_by_text(self.pz).click()
# self.driver.find_by_id('').select(self.pz)
# # sleep(1)
# self.driver.find_by_text(self.xb).click()
# sleep(1)
self.driver.find_by_id('submitOrder_id').click()
# print u"开始选座..."
# self.driver.find_by_id('1D').last.click()
# self.driver.find_by_id('1F').last.click()
sleep(1.5)
print("确认选座...")
self.driver.find_by_id('qr_submit_id').click()
except Exception as e:
print(e)
if __name__ == '__main__':
huoche=huoche()
huoche.start()