#!/usr/bin/env/python3
# -*- coding:utf-8 -*-
'''
Author:leo
Date&Time:2019-07-27 and 12:22
FileName:12306_成都到重庆
Description:Python3.5+selenium3.0
'''
'''
场景:
1.打开12306官方订票网站:https://kyfw.12306.cn/otn/leftTicket/init
2.出发城市填写 ‘成都东’,到达城市填写 ‘重庆北’
(陷阱1:注意输入城市名前,一定要先点击一下输入框,否则查不到)
(陷阱2:输入城市名最后要包含一个回车符,否则输入框里面会自动清除)
3.发车时间选 06:00--12:00。(可以用Select类通过下标选取,也可以用Xpathposition()方法选取)
4.发车日期选 当前时间的下一天,也就是日期标签栏的,第二个标签。(可以用CSS-#date_range li:nth-child(2)直接选取,也可以用xpath遍历选取)我们要查找的是所有 二等座还有票的车次,打印出这些有票的车次的信息(这里可以用xpath),结果如下:
1:D2244|成都东|重庆北|06:43|08:52|02:09|当日到达
2:G2371|成都东|重庆西|07:03|08:27|01:24|当日到达'''
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select# 实例化浏览器驱动
driver = webdriver.Chrome()
driver.get("https://kyfw.12306.cn/otn/leftTicket/init")
driver.implicitly_wait(3)
sleep(3)# 出发站
driver.find_element_by_id("fromStationText").click()
driver.find_element_by_id("fromStationText").send_keys("成都东")
# 模拟键盘操作:回车键
driver.find_element_by_id("fromStationText").send_keys(Keys.ENTER)# 终点站
driver.find_element_by_id("toStationText").click()
driver.find_element_by_id("toStationText").send_keys("重启北")
driver.find_element_by_id("toStationText").send_keys(Keys.ENTER)# 出发日期-逻辑运算符and多元素定位
driver.find_element_by_xpath("//input[@id='train_date' and @class='inp_selected']").click()
calLeft = driver.find_elements_by_css_selector("div.cal-wrap>div.cal div.cal-cm>div")
count, now = 0, 0
for date in calLeft:count += 1if date.text == r"今天":now = countprint(f"{date.text}是当月第{count}天,我将买明天的车票。")if count == now+1:date.click()# 日期选择用法2:通过切换日期列表,选择第二个日期tomorrow,自动搜索车票
# tomorrow = driver.find_element_by_css_selector('#date_range li:nth-child(2)')# 出发时间:06:00-12:00
driver.find_element_by_id("cc_start_time").click()
sleep(1)
driver.find_element_by_xpath("//select[@id='cc_start_time']/option[position()=3]").click()
sleep(1)# 出发时间用法2:导入Select,通过下拉框选择出发时间的用法
# timeSelect =  Select(driver.find_element_by_id('cc_start_time'))
# timeSelect.select_by_visible_text('06:00--12:00')# 点击查询
driver.find_element_by_id("query_ticket").click()
sleep(3)# 打印结果
# trainNums = driver.find_elements_by_xpath("//div[@id='t-list']/table/tbody[@id='queryLeftTable']/tr")
# 高级判断:二等座td[4]加上[@class],判断如果有票,就有class属性,没有票就没有class属性,子路径选中第一个td,牛逼!
trainNums = driver.find_elements_by_xpath("//*[@id='queryLeftTable']//td[4][@class]/../td[position()<2]")
num = 0
for train in trainNums:new = str(train.text).replace("\n"," | ")num +=1print(f"{num:<2}:{new}")# 关闭浏览器(上次忘掉这个,导致电脑卡到飞起)
sleep(5)
driver.close()

-------------------------------------------------------------------------------------------------------------------------------------------------------------------
今天是当月第27天,我将买明天的车票。
1 :D2244 | 成都东 | 重庆北 | 06:43 | 08:52 | 02:09 | 当日到达
2 :G2371 | 成都东 | 重庆西 | 07:03 | 08:27 | 01:24 | 当日到达
3 :D1781 | 成都东 | 重庆西 | 07:12 | 09:09 | 01:57 | 当日到达
4 :G8543 | 成都东 | 沙坪坝 | 07:25 | 08:53 | 01:28 | 当日到达
5 :G1755 | 成都东 | 重庆西 | 07:30 | 09:02 | 01:32 | 当日到达
6 :G8541 | 成都东 | 沙坪坝 | 07:43 | 09:18 | 01:35 | 当日到达
7 :G8683 | 成都南 | 重庆西 | 08:06 | 09:28 | 01:22 | 当日到达
8 :G1983 | 成都东 | 重庆西 | 08:15 | 09:55 | 01:40 | 当日到达
9 :D1801 | 成都东 | 重庆西 | 08:20 | 09:50 | 01:30 | 当日到达
10:G8701 | 成都东 | 重庆北 | 08:35 | 10:10 | 01:35 | 当日到达
11:G8751 | 成都东 | 重庆北 | 09:37 | 11:10 | 01:33 | 当日到达
12:D2260 | 成都东 | 重庆北 | 10:22 | 12:24 | 02:02 | 当日到达
13:G8545 | 成都东 | 沙坪坝 | 10:32 | 12:06 | 01:34 | 当日到达
14:G8705 | 成都东 | 重庆北 | 10:53 | 12:44 | 01:51 | 当日到达
15:G8691 | 成都东 | 重庆西 | 11:11 | 12:28 | 01:17 | 当日到达
16:G8509 | 成都东 | 重庆北 | 11:22 | 13:04 | 01:42 | 当日到达
17:G8565 | 成都东 | 沙坪坝 | 11:37 | 12:57 | 01:20 | 当日到达
18:G8567 | 成都东 | 沙坪坝 | 11:53 | 13:06 | 01:13 | 当日到达
19:G8529 | 成都东 | 重庆北 | 11:59 | 13:36 | 01:37 | 当日到达

Process finished with exit code 0

【Web_UI自动化_Python3_12306查询余票/车次_seleniumkeysselectXpath定位】12306火车票官方订票网站,查询余票/车次,自动化测试案例相关推荐

  1. python查询12306余票_Python脚本实现12306火车票查询系统

    最近我看到看到使用python实现火车票查询,我自己也实现了,感觉收获蛮多的,下面我就把每一步骤都详细给分享出来.(注意使用的是python3) 首先我将最终结果给展示出来: 在cmd命令行执行:py ...

  2. BlueCat 批量网站查询工具,全网最快的查询工具!!

    [置顶]         BlueCatTools 最新版下载地址 2013-11-01 15:57     阅读(14)     评论(0)     BlueCatTools 百度收录批量查询工具 ...

  3. 用python写12306系统_Python实现12306火车票抢票系统

    Python实现12306火车票抢票系统 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  Python实现12306火车票抢票系统.txt ] (友情提示:右键点 ...

  4. 项目实战一 12306火车票余票查询软件

    1.安装docopt.urllib.requests 2.实现程序基础框架 # -*- coding:utf-8 -*-""" Train tickets query p ...

  5. Python爬虫----12306火车票余票查询器

    12306火车票余票查询器 文章同步更新:http://www.riba2534.cn/?p=305 今天写了一个12306火车票余票查询器的爬虫,在这里记录一下过程. 首先先看一下最终效果: 比如想 ...

  6. 12306火车票爬虫处理“目前排队人数已经超过余票张数”

    在12306订票,当选好了车次和乘车人,就会进入确认环节.这个时候如果排队人数超过余票张数,是没有"继续购票"的按钮,只有"返回修改"的按钮.这个逻辑是在get ...

  7. [最新下载] 【火车票订票外挂】Go-Home–12306.cn 网上火车票自动订票程序

    名称:Go-Home – 12306.cn 网上火车票自动订票程序 软件介绍:http://www.appinn.com/go-home-auto-tickets/ 下载地址:[钱运来博客下载] [火 ...

  8. Python版实现12306抢票功能,真的能帮你抢到春运回家的票吗?

    背景 每逢佳节倍思亲,年关将近,思乡的情绪是不是愈发强烈了,筒子们是不是又要准备开始抢票了,还是在找黄牛吗?但是,今年在考虑是否能抢到票以外,还需要考虑是否能回得去,没错,因为疫情,需要全国人民同心协 ...

  9. 消费提示:2012春运火车票 网上订票攻略

    http://www.smzdm.com/consumer-tip-raiders-2012-spring-festival-tickets-online-booking.html 消费提示:2012 ...

最新文章

  1. Cartographer学习笔记
  2. 编程之美-电梯调度算法方法整理
  3. LeetCode: Longest Consecutive Sequence [128]
  4. 苏州银行签约神策数据,致力打造科技引领的新时代普惠银行
  5. 探秘大型B2C网站如何实现高性能可伸缩架构技术
  6. Python_list部分功能介绍
  7. Swiper4.5在vue项目中的使用方法
  8. Python机器学习:梯度下降法001什么是梯度下降法
  9. 在线报表设计实战系列 – 制作动态列与静态列混排的报表(5)
  10. PowerMock进行mock测试
  11. android apk旋转,系统的屏幕旋转弱爆了!超强屏幕旋转控制APP
  12. 工具网站:10个国外免费、无版权、高清图片素材站
  13. msl3等级烘烤时间_MSL等级说明
  14. linux安装Vim-plug和配置.vimrc文件
  15. node koa解析excel表格 .xlsx .xls
  16. 大规模时间序列数据自动异常检测架构
  17. 我也有拖延症,你呢?
  18. 【考研复习】关于以太网争用期的易混知识点
  19. 【工控安全产品】工业控制系统信息安全检查工具箱
  20. mysql安装 解压版

热门文章

  1. 英雄联盟与服务器系统连接不上怎么办,win7系统英雄联盟连接不上服务器的处理技巧...
  2. android 关于HOME键
  3. C#开发微信门户及应用(23)-微信小店商品管理接口的封装和测试
  4. 禾穗HERS | 什么是我们所有人都具备的天赋?
  5. 用Python获取全国地铁站点数据,用时5秒轻松搞定,看呆了!!
  6. 小米手环4 连接win10笔记本小米感应钥匙绑定失败 解决方法,亲测有效!
  7. Keil C51编译/链接/优化
  8. 哪种主机更适合初创公司租用?云主机与共享主机
  9. 音乐怎么发在计算机里,音乐伴奏怎么发送到微信、电脑、手机、U盘?
  10. 怎样运用KeyShot中材质采样值