目录

一、说明

1.1、背景

1.2、说明

二、步骤

2.1、点击去购票

2.2、在搜索框中输入车次信息

2.3、点击查找

2.4、出现车次信息,进行筛选,如果有票则点击计入预定车票界面

三、结果

四、小节


一、说明

1.1、背景

接上文,春运抢不到票,试图通过代码解决这个问题,以下内容是第二部分。

1.2、说明

操作系统:win 10

编辑器:pycharm edu

语言及版本:python 3.10

使用的库:selenium

实现思路:使用selenium模拟人的行为,进行自动化操作

关于代码:完整代码会在第三部分完全实现功能放出

第一部分内容-->已解决登录问题。

浏览器下载与驱动的安装:火狐浏览器下载与驱动安装

第一部分内容链接:第一部分

浏览器闪退说明:大概率是因为下载的浏览器和浏览器驱动版本不一致,建议使用搜索引擎查找大佬分享的内容解决

以下url不会放真实的,拿来测试注意识别并自行更改。

自动化购票流程图功能实现如下图1:

图1

二、步骤

tips:下列的代码都是通过检查页面源代码,进行元素的审查完成的。

2.1、点击去购票

    driver.switch_to.window(driver.window_handles[-1])time.sleep(3)# 刷新driver.refresh()time.sleep(3)print(driver.title)print(driver.current_url)# https://kyfw.12306.cn/otn/view/index.html# 在新窗口点击前往订票,又会跳转到新窗口driver.find_element(By.XPATH, '//*[@id="link_for_ticket"]').click()

2.2、在搜索框中输入车次信息

问题:

这里有一个问题,直接在输入框中输入内容要选择系统提示的目的地才能成功,而这个目的地无法审查出来;

解决办法:

先点击输入框,在输入内容,然后在点击另一个输入框,循环反复(经过测试,日期输入框的提示无需理会),即可默认选择系统出现的提示内容。

    driver.switch_to.window(driver.window_handles[-1])time.sleep(5)# 出发地driver.find_element(By.XPATH, '//*[@id="fromStationText"]').click()driver.find_element(By.XPATH, '//*[@id="fromStationText"]').send_keys("深圳北", Keys.ENTER)# 目的地time.sleep(1)driver.find_element(By.XPATH, '//*[@id="toStationText"]').click()driver.find_element(By.XPATH, '//*[@id="toStationText"]').send_keys("百色", Keys.ENTER)# 日期,先清除默认内容,在输入driver.find_element(By.XPATH, '//*[@id="train_date"]').click()driver.find_element(By.XPATH, '//*[@id="train_date"]').clear()# time.sleep(1)driver.find_element(By.XPATH, '//*[@id="train_date"]').send_keys("2023-01-18")

2.3、点击查找

    time.sleep(2)driver.find_element(By.XPATH, '//*[@id="query_ticket"]').click()

2.4、出现车次信息,进行筛选,如果有票则点击计入预定车票界面

   for tr in tr_list:  # 遍历所有车次信息time.sleep(1)train_number = tr.find_element(By.CLASS_NAME, "number").text  # 车次if train_number in trains:  # 如果该车次在输入的车次里left_ticker_td = tr.find_element(By.XPATH, './/td[4]').textif left_ticker_td == '有' or left_ticker_td.isdigit():  # 如果该车次有票print(train_number+'有票')btn72 = tr.find_element(By.CLASS_NAME, 'btn72')  # 找到该车次的预订按钮btn72.click()

三、结果

3.1、代码运行最终结果

如下图2:

图2

四、小节

本部分是第二部分,完成了从登陆界面进入车次查找,并进行车次的筛选,还剩下确认乘客信息并提交订单的部分即可完成自动化抢票。

完成本部分需要掌握的知识:

1)selenium的视角切换、点击、文本框输入、提取内容

2)python基础

说明:完整代码会在第三部分完全实现功能放出

2023年12306购票平台自动化购票二|解决车次查找与预定相关推荐

  1. 2023年12306购票平台自动化购票终|解决乘客选择与车票提交(附自动化购票完整源代码与演示视频)

    目录 一.说明 1.1.背景 1.2.说明 二.步骤 2.1.切换视角检索乘车乘客 2.2.选择乘客 2.3.关闭学生票选择界面 2.4.提交订单 2.5.选择座位并确认 三.完整代码与视频演示 3. ...

  2. 2023年12306购票平台自动化购票一|解决登录问题

    目录 一.说明 1.1.背景 1.2.说明 二.步骤 2.1.打开12306网址 2.2.输入账号与密码 2.3.点击立即登录 2.4.拖动滑块认证 三.结果 3.1.运行结果 四.本次小节 一.说明 ...

  3. uvm 形式验证_验证平台自动化篇之二:UVM Framework

    原标题:验证平台自动化篇之二:UVM Framework 一个UVM使用者,从新手到精通大致会经历三年的时间,而在经过这三年之后,verifier会有倦怠期.除了不可避免地在80%以上工作处于重复性劳 ...

  4. 计算机毕业设计之仿12306火车票购票平台

    1 简介 今天向大家介绍一个帮助往届学生完成的毕业设计项目,计算机毕业设计之仿12306火车票购票平台. 计算机毕业生设计,课程设计需要帮助的可以找我 2 设计概要 21世纪是信息化时代,随着信息技术 ...

  5. 基于微信小程序的电影院购票平台——计算机毕业设计

    开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myecl ...

  6. java基于微信小程序的电影院购票平台-计算机毕业设计

    项目介绍 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/ ...

  7. 基于微信小程序的电影院购票平台

    开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myecl ...

  8. Springboot毕设项目动物园购票平台17j32(java+VUE+Mybatis+Maven+Mysql)

    Springboot毕设项目动物园购票平台17j32(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBu ...

  9. 候补购票为旅客购票提供更加快捷的渠道

    候补购票服务是指旅客通过12306网站或手机客户端购票,如遇所需车次.席别无票时,可按日期.车次.席别提交购票需求,并在预付票款后,售票系统自动安排网上排队候补.当对应的车次.席别因退票.改签等业务产 ...

最新文章

  1. 可遇不可求的BUG之采用MYSQL odbc 3.51访问数据库返回值缺失
  2. 2013 ACM/ICPC Asia Regional Chengdu Online We Love MOE Girls 字符串STL 的应用
  3. 一套代码编译出ios和android,Hippy: Hippy 是一个新生的跨端开发框架,目标是使开发者可以只写一套代码就直接运行于三个平台(iOS、Android 和 Web)...
  4. 【详解】CPU执行算术运算或逻辑运算时,常将源操作数和结果暂存在()中
  5. Java_输出60的十六进制
  6. 【优雅代码】深入浅出 妙用Javascript中apply、call、bind
  7. C语言数组相似度比对,某课程设计---文件相似度判断
  8. c++ file* 句柄泄漏_C++核心指南:P.8 勿泄漏任务资源
  9. linux 文件指针,Linux中文件描述符fd与文件指针FILE*互相转换实例解析
  10. gdb调试时调用函数、设置观察点以及GDB的宏
  11. 建立windows2003 域名服务器
  12. BZOJ2276: [Poi2011]Temperature
  13. leaflet地图原理_leaflet在线地图简介
  14. edge浏览器开启ie兼容模式
  15. Codeforces 1023G:Pisces(最长反链)
  16. 网络安全笔记1——Internet协议的安全性
  17. 数字疗法002 | 睡不着,睡不醒,睡不好?这几个平台是失眠星人的救星
  18. 计算机组成原理求地址范围,计算机组成原理,寻址范围是什么意思?
  19. FBX文件导入unity贴图丢失或动作无法播放
  20. 梦幻般仙境mac动态壁纸

热门文章

  1. [附源码]计算机毕业设计JAVA合租吧管理系统
  2. PDF中加java空白可写字段,使用iTextSharp压模的可填写PDF中的空白字段
  3. Received 802.1Q BPDU on non trunk 的解决办法
  4. 一分钟搭建自己的私有网盘!还用什么百度网盘!
  5. 用html布局怎么调试,网页规划 CSS布局调试的有用办法
  6. redis缓存设置超时时间
  7. pymongo获取一列数据
  8. Cesium雨雪雾天气效果
  9. Apache Kudu架构
  10. BIOS实战之PCI设备枚举一