溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在python中利用selenium與chrome實(shí)現(xiàn)一個物車秒殺自動結(jié)算功能

發(fā)布時間:2021-01-08 16:27:00 來源:億速云 閱讀:431 作者:Leah 欄目:開發(fā)技術(shù)

怎么在python中利用selenium與chrome實(shí)現(xiàn)一個物車秒殺自動結(jié)算功能?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

一、所需環(huán)境

Selenium

Selenium是一個開源的自動化測試工具。原理是通過模擬瀏覽器操作,還支持java,python,c#,php等主流的編程語言。

一般爬蟲也支持Selenium,一些經(jīng)過js渲染的內(nèi)容和數(shù)據(jù)和ajax異步請求出來的數(shù)據(jù)通過Selenium就能很簡單直觀的爬取下來。但是Selenium的缺點(diǎn)也是顯而易見的,相比于正則的匹配Selenium要加載瀏覽器以及更多的東西,他的執(zhí)行速度比其他模塊慢很多,所以若要保證速度,能不用Selenium就不要用Selenium吧。

web測試自動化:不同于單元測試和接口測試,web測試的自動化更加貼近于人的行為,通過對用戶點(diǎn)擊行為和文本輸入行為等進(jìn)行模擬,當(dāng)web自動化登錄成功后,就去獲取這個數(shù)據(jù)進(jìn)行斷言。斷言如果相等,測試通過;如果不相等,測試失敗。用戶可以看到某一項(xiàng)操作是否真的產(chǎn)生了,但是程序只能通過判斷某些“證據(jù)”去判斷之前的行為是否真的生效。

二、安裝

下載Selenium并安裝

安裝對應(yīng)瀏覽器的驅(qū)動程序 WebDriver

驅(qū)動程序要和自己電腦上的瀏覽器版本相對應(yīng),比如我使用的chrome瀏覽器是72版本的,就要下載ChromeDriver2.46這個版本。

怎么在python中利用selenium與chrome實(shí)現(xiàn)一個物車秒殺自動結(jié)算功能

怎么在python中利用selenium與chrome實(shí)現(xiàn)一個物車秒殺自動結(jié)算功能

下載解壓之后配置環(huán)境變量Path即可。 Mac對應(yīng)的環(huán)境變量配置可以參考這位老哥的文章進(jìn)行配置

三、代碼

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

from selenium import webdriver
import datetime
import time


def login():
  # 打開淘寶登錄頁,并進(jìn)行掃碼登錄
  browser.get("https://www.taobao.com")
  time.sleep(3)
  if browser.find_element_by_link_text("親,請登錄"):
    browser.find_element_by_link_text("親,請登錄").click()
    print("請?jiān)?5秒內(nèi)完成掃碼")
    time.sleep(15)
    browser.get("https://cart.taobao.com/cart.htm")
  time.sleep(3)

  now = datetime.datetime.now()
  print('login success:', now.strftime('%Y-%m-%d %H:%M:%S'))


def buy(times, choose):
  is_buyed = False
  # 點(diǎn)擊購物車?yán)锶x按鈕
  if choose == 2:
    print("請手動勾選需要購買的商品")
  while True:
    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
    print('現(xiàn)在時間:', now)
    # 對比時間,時間到的話就點(diǎn)擊結(jié)算
    if now > times:
      if choose == 1:
        while True:
          try:
            if browser.find_element_by_id("J_SelectAllcbx1"):
              browser.find_element_by_id("J_SelectAllcbx1").click()
              print('嘗試全選')
              break
          except:
            print("找不到全選按鈕")
      # 點(diǎn)擊結(jié)算按鈕
      try:
        if browser.find_element_by_id("J_Go"):
          browser.find_element_by_id("J_Go").click()
          print("結(jié)算成功")
      except:
        pass
      while True:
        try:
          if browser.find_element_by_link_text('提交訂單') and is_buyed == False:
            browser.find_element_by_link_text('提交訂單').click()
            now1 = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
            print("搶購成功時間:%s" % now1)
        except:
          print("再次嘗試提交訂單")
      time.sleep(0.005)


if __name__ == "__main__":
  times = input("請輸入搶購時間,格式如(2018-09-06 11:20:00.000000):")
  # 時間格式:"2018-09-06 11:20:00.000000"
  browser = webdriver.Chrome()
  browser.maximize_window()
  login()
  choose = input("到時間自動勾選購物車請輸入“1”,否則輸入“2”:")
  buy(times, choose)

關(guān)于怎么在python中利用selenium與chrome實(shí)現(xiàn)一個物車秒殺自動結(jié)算功能問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI