练习js——自动化实现12306火车票查询

Posted IT女神

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了练习js——自动化实现12306火车票查询相关的知识,希望对你有一定的参考价值。

# !/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time : 2019/12/1 09:03
# @Author : "小多肉"
# @Email : 1021181701@qq.com
# @File : task1127.py
# @Software: PyCharm
import time
from datetime import datetime, timedelta

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.12306.cn/index/")
# 等待出发地选择框出现
# WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.ID,"fromStationText")))
time.sleep(2)
#选择出发地
fromStation = 福州   #出发地汉字
fs = FZS   # 出发地代码
fromStation_js = """
document.getElementById(‘fromStation‘).value = arguments[0];  // 隐藏的出发地元素,value写入出发地代码
var from = document.getElementById(‘fromStationText‘);
from.className = "input inp-txt_select";    // 输入出发地后的class改成input inp-txt_select
from.value = arguments[1];
"""
driver.execute_script(fromStation_js,fs,fromStation)

#选择目的地
toStation = 长沙    # 出发地汉字
ts = CSQ  # 出发地代码
ele_toStation = driver.find_element_by_id("toStationText")
ele_ts = driver.find_element_by_id("toStation")
toStation_js = """arguments[1].value=arguments[2];
var to = arguments[0];
to.className = "input inp-txt_select";
to.value = arguments[3];
"""
driver.execute_script(toStation_js,ele_toStation,ele_ts,ts,toStation)

# 选择出发日期
# 当前日期+10天,转成字符串格式
date = str(datetime.now().date()+timedelta(days=10))    
# 使用js修改日期框为可输入状态,传入日期
date_js = """
var date = document.getElementById(‘train_date‘);
date.readOnly = false;
date.value = arguments[0];
"""
driver.execute_script(date_js,date)
# WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.ID,"search_one")))
# 点击查询按钮
driver.find_element_by_id("search_one").click()
time.sleep(1)
driver.quit()

以上是关于练习js——自动化实现12306火车票查询的主要内容,如果未能解决你的问题,请参考以下文章

12306火车票查询爬虫(基于selenium)

JavaScript之12306自动刷新车票[待完善]

js之日期框的处理

使用scrapy进行12306车票查询

爬取12306火车票信息

python利用selenium+requests+beautifulsoup爬取12306火车票信息