12306抢票(3)自动登录

import time

from selenium import webdriver

from selenium.common import ElementNotVisibleException, ElementNotInteractableException

from selenium.webdriver.common.by import By

from selenium.webdriver import ActionChains

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.support.wait import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.action_chains import ActionChains

 

 

# 不让程序检测是驱动控制

def login(number,time1, from_station, to_station):

    driver = webdriver.Chrome()

    driver.maximize_window()

    driver.get('https://www.12306.cn/index/')

    driver.find_element(by=By.ID, value='J-btn-login').click()

    driver.find_element(by=By.ID, value='J-userName').send_keys('')

    driver.find_element(by=By.ID, value='J-password').send_keys('')

    driver.find_element(by=By.ID, value='J-login').click()

    script = 'Object.defineProperty(navigator,"webdriver",{get:()=>undefined,});'

    driver.execute_script(script)
    time.sleep(5)
    # 点击确定按钮
    btn = driver.find_element('css selector', 'div.modal-ft>a')
    btn.click()
    driver.find_element(by=By.ID, value='link_for_ticket').click()
    # 点击确定
    btn1 = driver.find_element(by=By.XPATH, value='//*[@id="qd_closeDefaultWarningWindowDialog_id"]')
    btn1.click()
    driver.find_element(by=By.XPATH, value='//*[@id="fromStationText"]').click()
    driver.find_element(by=By.XPATH, value='//*[@id="fromStationText"]').clear()
    driver.find_element(by=By.XPATH, value='//*[@id="fromStationText"]').send_keys(from_station)
    driver.find_element(by=By.XPATH, value='//*[@id="fromStationText"]').send_keys(Keys.ENTER)
    time.sleep(1)
    driver.find_element(by=By.XPATH, value='//*[@id="toStationText"]').send_keys(Keys.ENTER)
    driver.find_element(by=By.XPATH, value='//*[@id="toStationText"]').click()
    time.sleep(1)
    driver.find_element(by=By.XPATH, value='//*[@id="toStationText"]').send_keys(to_station)

driver.find_element(by=By.XPATH, value='//*[@id="toStationText"]').click()
time.sleep(1)
driver.find_element(by=By.XPATH, value='//*[@id="toStationText"]').send_keys(to_station)
driver.find_element(by=By.XPATH, value='//*[@id="toStationText"]').send_keys(Keys.ENTER)
driver.find_element(by=By.XPATH, value='//*[@id="train_date"]').clear()
driver.find_element(by=By.XPATH, value='//*[@id="train_date"]').send_keys(time1)
# 点击查询
driver.find_element(by=By.XPATH, value='//*[@id="query_ticket"]').click()
time.sleep(3)
#预定,选车
driver.find_element(by=By.XPATH,value=number).click()
time.sleep(1)
#选人
driver.find_element(by=By.XPATH,value='//*[@id="normalPassenger_0"]').click()
# 确认购票提交订单
time.sleep(2)
sumit_button =driver.find_element(by=By.XPATH, value='//*[@id="submitOrder_id"]')
try:
    while sumit_button:
        try:
            sumit_button.click()
            sumit_button = driver.find_element(by=By.XPATH, value='//*[@id="submitOrder_id"]')
        except(ElementNotVisibleException, ElementNotInteractableException):
            break
    print('抢票成功,请去确认')
except:
    pass
# 选座
time.sleep(1)
def wait(locator, timeout=10):
    '''等到元素加载完成'''
    WebDriverWait(driver, timeout).until(EC.presence_of_element_located(locator))
locator=(By.XPATH,'//*[@id="1F"]')
wait(locator)
elements = driver.find_element(by=By.XPATH,value='//*[@id="1F"]')  # 再次获取元素,预防StaleElementReferenceException
driver.execute_script('arguments[0].click();', elements)  # 模拟用户点击
#再次确认
double_check=driver.find_element(by=By.XPATH,value='//*[@id="qr_submit_id"]')
try:
    while sumit_button:
        try:
            double_check.click()
            double_check = driver.find_element(by=By.XPATH,value='//*[@id="qr_submit_id"]')
        except(ElementNotVisibleException, ElementNotInteractableException):
            break
    print('抢票成功,请去支付')
except:
    pass
# 网上支付
time.sleep(2)
#driver.find_element(by=By.XPATH, value='//*[@id="payButton"]').click()


# 不关闭浏览器
input("t")

 

 

#密码账号填自己的

你可能感兴趣的:(python)