1.导包:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
2.选择浏览器驱动:这里选择的是Chrome
driver=webdriver.Chrome()
# 12306查票的网址
driver.get('https://kyfw.12306.cn/otn/leftTicket/init')
网址打开长这样:
设置等待,有三种方式,第一种是死等:time.sleep()。第二种是显示等待WebDriverWait,第三种是隐式等待:implicitly_wait。为什么要设置等待?因为当页面跳转的时候下个页面的数据海没有加载出来,容易导致我们下面的代码报错,我这里使用的是隐式等待,因为只用设置一次哈哈哈哈
driver.implicitly_wait(10)
输入出发地,到达地,和出发时间
fromStationText=input('请输入出发地:')
driver.find_element(By.ID,'fromStationText').click()
driver.find_element(By.ID,'fromStationText').clear()
driver.find_element(By.ID,'fromStationText').send_keys(fromStationText)
driver.find_element(By.ID,'fromStationText').send_keys(Keys.ENTER)
# 输入到达地点
toStationText=input('请输入出发地:')
driver.find_element(By.ID,'toStationText').click()
driver.find_element(By.ID,'toStationText').clear()
driver.find_element(By.ID,'toStationText').send_keys(toStationText)
driver.find_element(By.ID,'toStationText').send_keys(Keys.ENTER)
# 输入日期
date=input('请输入出发时间:')
driver.find_element(By.ID,'train_date').click()
driver.find_element(By.ID,'train_date').clear()
driver.find_element(By.ID,'train_date').send_keys(date)
driver.find_element(By.ID,'train_date').send_keys(Keys.ENTER)
对应到操作页面是这样的: 记住一定要设置回车按钮!!!
点击查询车票:
driver.find_element(By.ID,'query_ticket').click()
考虑到各位的经济实力,我这里设置的是二等座,当然可以调整,无非换一个id名字
driver.find_element(By.ID,'cc_seat_type_O_check').click()
点击预定,我这里用的是完整的Xpath,大家也可以使用其他方法
driver.find_element(By.XPATH,'/html/body/div[2]/div[7]/div[12]/table/tbody/tr[1]/td[12]/a').click()
登录12306
username='自己的电话号码'
pwd='自己的12306密码'
driver.find_element(By.ID,'J-userName').send_keys(username)
driver.find_element(By.ID,'J-password').send_keys(pwd)
driver.find_element(By.ID,'J-login').click()
验证登录:执行到这里的时候需要填写12306发送给你手机号的验证码
sfz='自己的身份证后四位'
driver.find_element(By.ID,'id_card').send_keys(sfz)
driver.find_element(By.ID,'verification_code').click()
yanzma=input("输入验证码:")
driver.find_element(By.ID,'code').send_keys(yanzma)
driver.find_element(By.ID,'sureClick').click()
选择乘车人信息,点击提交订单
driver.find_element(By.ID,'normalPassenger_0').click()
driver.find_element(By.ID,'submitOrder_id').click()
到这里就抢到票了,自己去支付一下就ok了!
完整代码:记得填写自己的手机号,密码,身份证后四位就可以使用了
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
driver=webdriver.Chrome()
driver.get('https://kyfw.12306.cn/otn/leftTicket/init')
driver.implicitly_wait(10)
# 输入出发地
fromStationText=input('请输入出发地:')
driver.find_element(By.ID,'fromStationText').click()
driver.find_element(By.ID,'fromStationText').clear()
driver.find_element(By.ID,'fromStationText').send_keys(fromStationText)
driver.find_element(By.ID,'fromStationText').send_keys(Keys.ENTER)
# 输入到达地点
toStationText=input('请输入出发地:')
driver.find_element(By.ID,'toStationText').click()
driver.find_element(By.ID,'toStationText').clear()
driver.find_element(By.ID,'toStationText').send_keys(toStationText)
driver.find_element(By.ID,'toStationText').send_keys(Keys.ENTER)
# 输入日期
date=input('请输入出发时间:')
driver.find_element(By.ID,'train_date').click()
driver.find_element(By.ID,'train_date').clear()
driver.find_element(By.ID,'train_date').send_keys(date)
driver.find_element(By.ID,'train_date').send_keys(Keys.ENTER)
# 查询车票
driver.find_element(By.ID,'query_ticket').click()
# time.sleep(1)
# 二等座
driver.find_element(By.ID,'cc_seat_type_O_check').click()
# 预定车票
driver.find_element(By.XPATH,'/html/body/div[2]/div[7]/div[12]/table/tbody/tr[1]/td[12]/a').click()
username='自己的手机号'
pwd='登录密码'
driver.find_element(By.ID,'J-userName').send_keys(username)
driver.find_element(By.ID,'J-password').send_keys(pwd)
driver.find_element(By.ID,'J-login').click()
sfz='自己的身份证后四位'
driver.find_element(By.ID,'id_card').send_keys(sfz)
driver.find_element(By.ID,'verification_code').click()
yanzma=input("输入验证码:")
driver.find_element(By.ID,'code').send_keys(yanzma)
driver.find_element(By.ID,'sureClick').click()
driver.find_element(By.ID,'normalPassenger_0').click()
driver.find_element(By.ID,'submitOrder_id').click()
都看到这里了,点个赞呗!!!
标签:python,driver,购票,element,click,keys,12306,ID,find From: https://blog.csdn.net/m0_73426548/article/details/139505920