美文网首页
selenium自动提交taobao订单

selenium自动提交taobao订单

作者: EZ | 来源:发表于2020-06-01 23:04 被阅读0次

issue: 设置下单时间为2020-06-01-22-55-00-000000,订单提交时间大概需要2s左右
查找元素后进行点击还是需要较多时间


订单提交时间

solution: 尝试模拟鼠标进行点击,或设置之间比目标时间提前。或先进行结算,到达目标时间再提交订单

提前点击结算,后续只进行提交订单还是会快一点,不过,提前点击结算后,在秒杀时间后点击提交订单是否会价格会变成秒杀价格还不清楚。
部分内容参考 教程

#!/usr/bin/env python
# coding: utf-8

from selenium import webdriver
import datetime
import time
from selenium.webdriver import ActionChains
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By


def login(user,password):
    wb.get("https://www.taobao.com")
    if wb.find_element_by_link_text('亲,请登录'):
        print("即将请求登录")
        wb.find_element_by_link_text('亲,请登录').click()
        time.sleep(2)
        wb.find_element_by_link_text('密码登录').click()
        wb.find_element_by_id('fm-login-id').send_keys(user) #id
        wb.find_element_by_id('fm-login-password').send_keys(password) #密码
        time.sleep(2) #滑块加载需要时间
        source = wb.find_element_by_id("nc_1_n1z")
        ActionChains(wb).drag_and_drop_by_offset(source, 258, 0).perform()
        print("滑块已拖动")
        time.sleep(2)
        print('即将进行登录')
        wb.find_element_by_xpath('//*[@id="login-form"]/div[4]/button').click()
        print("2s后将打开购物车")
        time.sleep(2)

def picking(): 
#其实判断是否有选择商品不必要,因为结算下单阶段还是要判断是否需要结算,这一步主要 是判断是否已选择商品
    
    wb.get("https://cart.taobao.com/cart.htm") #打开购物车

    wait = WebDriverWait(wb,2)
    #global i
    i = 0  #在while 外
    while True:
        try:
            #print("ss")
            tjdd = wait.until(EC.presence_of_element_located((By.XPATH,'//*[@class="submit-btn"][@id="J_Go"]')))
            #不选择商品,结算也可点击,只是不会跳转页面,不用使用·elementToBeClickable()
            #print("可点击")
            #break
        except:
            print("请手动选择需下单商品")
            i = 0  #若无结算按钮 i= 0,重新计时
            time.sleep(2)
        else:
            if i ==0:
                print("结算已可点击,请在1分钟内尽快选择所有商品") #只打印一次,即出现结算
            time.sleep(2)
            i += 2
            if i == 60: #结算按钮在一分钟内不消失就退出循环并点击
                print("即将进入时间判断及下单阶段")
                break
            else:
                print(str(60-i),'s 后开始进入秒杀阶段')
    while True:   #提前点击结算,提交订单后是否会修改价格为目标时间之后?不行就注释掉,开启buy中的阶段
        try:
            aa = wb.find_element_by_link_text('结 算')
            aa.click()
            print('结算成功,准备提交订单') #退出结算循环,进入提交订单
            
            break
        except Exception as e:
            print(e)
 
def buy(times):
    time.sleep(0.1)
    while True: #通过循环获得当前时间
        now = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S-%f')
        if now > times: 
            #字符串 (str 的实例) 使用其字符的 Unicode 码位数字值 (内置函数 ord() 的结果) 按字典顺序进行比较。
#             while True:
#                 try:
#                     aa = wb.find_element_by_link_text('结 算')
#                     aa.click()
#                     print('结算成功,准备提交订单') #退出结算循环,进入提交订单
#                     break
#                 except Exception as e:
#                     print(e)
#             time.sleep(0.05)
            while True:
                try:
                    bb = wb.find_element_by_xpath('//*[@title="提交订单"]')
                    bb.click()
                    print('成功提交订单')
                    break  #提交订单后退出循环
                except:
                    print('提交订单失败,正在重新提交')
            break #如果当前时间已过计划时间退出循环
            
                        
if __name__ == '__main__':
    myuserid = input("请输入您的淘宝账号:")
    mypassword = input("请输入您的淘宝密码:")
    print("请输入商品下单时间,格式为:2020-06-01-21-55-24,即年月日时分秒")
    now1 = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S')
    print("当前时间为: ",now1)
    mytime = input("下单时间: ")
    mytime = mytime + "-000000"
    print('下单时间设置为:',mytime)
    wb = webdriver.Chrome()
    wb.maximize_window()
    login(user=myuserid,password=mypassword)
    picking()
    buy(times=mytime)
    et = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S-%f')
    print('订单提交时间为:',et)
    

相关文章

网友评论

      本文标题:selenium自动提交taobao订单

      本文链接:https://www.haomeiwen.com/subject/zjwezhtx.html