【Selenium实例学习】根据腾讯课程免费课,学习12306自动抢票功能的代码实践

在腾讯课程看了一节免费课,感觉讲得很好,所以就根据课程将过程写了下来,中间也遇到很多坑。具体都写到注释里了。

遇到的问题:在input回车时,提示SyntaxError: unexpected EOF while parsing,未成功解决,希望有大神帮忙,谢谢。

# _*_ coding:utf-8 _*_

# 从selenium引入webdriver驱动
from selenium import webdriver

# 引入time的sleep方法,使用sleep(3)可让程序等待1s
# 也可以使用import,使用时代码为time.sleep(3)
from time import sleep

# 用来处理 选择下拉框的数据
from selenium.webdriver.support.select import Select

# 代表使用Chrome浏览器,并返回1个对象driver。
# 等待3秒钟
driver = webdriver.Chrome()
sleep(3)

# 声明1个变量url_12306,并赋值网址
# 然后通过driver对象的get方法打开
# 浏览器最大化
# 等待3秒钟
url_12306 = "https://kyfw.12306.cn/otn/leftTicket/init"
driver.get(url_12306)
driver.maximize_window()
sleep(3)

# 出发地变量from_station。
# 清除当前数据
# 并输入“北京”,"\n"代表回车
from_station = driver.find_element_by_id("fromStationText")
from_station.click()
from_station.clear()
from_station.send_keys(u"北京\n")
sleep(2)

# 目的地变量to_station
# 清除当前数据
# 并输入“上海”,"\n"代表回车
to_station = driver.find_element_by_id("toStationText")
to_station.click()
to_station.clear()
to_station.send_keys(u"上海\n")
sleep(2)

# 发车时间变量start_time,并转为select的下拉格式
# 使用text定位。详细介绍见;https://blog.csdn.net/woshiyigerenlaide/article/details/103959190
start_time = Select(driver.find_element_by_id("cc_start_time"))
start_time.select_by_visible_text("12:00--18:00")
sleep(2)

# 点击“查询”queryticket
queryticket = driver.find_element_by_id("query_ticket")
queryticket.click()
sleep(3)

# 选择发车日期
# CSS写法详见:https://blog.csdn.net/woshiyigerenlaide/article/details/103961413
start_date = driver.find_element_by_css_selector("#date_range li:nth-child(4)")
start_date.click()
sleep(2)

# 我希望的车次
favorite_train = ["G131","G133"]

# 选择二等座有票的车次,因为不是唯一元素,所以用elements
# Xpath写法详见:https://blog.csdn.net/woshiyigerenlaide/article/details/104080735
train_list = driver.find_elements_by_xpath('//tbody[@id="queryLeftTable"]/tr/td[4][@class]/../td/div/div/div/a')

# 因为trani_list是个list,所以用for循环打印它的text
for train in train_list:
    train_number = train.text
# 判断,如果有自己希望的车次,就提示
    if train_number in favorite_train:
        print (train_number+u"有票了")
# 预定车票,因为book_ticket是个列表,所以取第1个元素[0]
        book_ticket = driver.find_elements_by_xpath('//tbody[@id="queryLeftTable"]/tr/td[4][@class]/../td[13]/a')[0]
        book_ticket.click()
# 手动登录,利用input的回车输入方法,继续执行代码
        input("enter")
        sleep(3)

# 选择2个乘客
        passenger = driver.find_element_by_id("normalPassenger_0")
        passenger.click()
        sleep(2)

# 提交订单
        submit_order = driver.find_element_by_id("submitOrder_id")
        submit_order.click()
        sleep(5)

        break
    else:
        print (train_number+u"暂时无票")

driver.quit()
发布了63 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/woshiyigerenlaide/article/details/104088813
今日推荐