def buy(driver: webdriver): url = 'https://market.m.taobao.com/app/sj/shop-membership-center/pages/index?spm=a1z10.4-b-s.w5003-22059585455.1.7f86274aL8QKmA' \ '&wh_weex=true&wx_navbar_transparent=true&sellerId=2360209412&scene=taobao_shop' btn_buy = "//span[contains(text(),'1积分享兰蔻菁纯宝石唇膏 02')]/../following-sibling::div[1]//div[@class='gift-act-btn']" btn_word = "//span[contains(text(),'1积分享兰蔻菁纯宝石唇膏 02')]/../following-sibling::div[1]//span[@class='gift-act-btn-text']" btn = "//div[@class='btnWarp']" word = "//span[@class='btn']" count = 0 login_time = "2020-06-10 13:23:00" buy_time = "2020-06-10 13:23:55" isFirst = True wait = WebDriverWait(driver, 10, 0.5) while True: if datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') < buy_time: # 提前登录 if isFirst and datetime.datetime.now().strftime( '%Y-%m-%d %H:%M:%S.%f') >= login_time: driver.maximize_window() driver.get(url) driver.implicitly_wait(2) login(driver) isFirst = False continue else: # 如果连续抢60次都抢不到 那么就放弃吧 count += 1 if count > 60: break print("即将开始抢购...") print(datetime.datetime.now()) # 重新进页面 driver.refresh() # 开始页面的唇膏抢购按钮 buy_btn = wait.until( lambda driver: driver.find_element_by_xpath(btn_buy)) # 开始页面的唇膏抢购按钮上的文字 word_btn = wait.until( lambda driver: driver.find_element_by_xpath(btn_word)) if word_btn.text == '立即兑换': # 如果抢购按钮上的文字为立即兑换 则点击按钮跳转详情页 buy_btn.click() # 详情页中的购买按钮 targetBtn = wait.until( lambda driver: driver.find_element_by_xpath(btn)) # 详情页中的购买按钮上的文字 targetBtnWord = wait.until( lambda driver: driver.find_element_by_xpath(word)) if targetBtnWord.text != "已抢光": # 如果详情页中购买按钮上的文字不为已枪光 则点击购买 targetBtn.click() time.sleep(5) # 抢到了就退出... break print("抢购结束...")
def start_session(driver: webdriver) -> None: driver.implicitly_wait(30) driver.maximize_window()