代码如下:
from selenium import webdriver
import time
from pykeyboard import *
from pymouse import *
browser = webdriver.Chrome() # 浏览器对象
browser.maximize_window() # 窗口最大化
k = PyKeyboard() # 键盘对象
m = PyMouse() # 鼠标对象
def login():
# 打开淘宝首页,通过扫码登录
browser.get("https://www.taobao.com")
time.sleep(3)
if browser.find_element_by_link_text("亲,请登录"):
browser.find_element_by_link_text("亲,请登录").click()
print(f"请尽快扫码登录")
time.sleep(5)
def picking(method):
# 打开购物车列表页面
browser.get("https://cart.taobao.com/cart.htm") # 打开淘宝页面
time.sleep(3)
# 是否全选购物车
if method == 0:
while True:
try:
if browser.find_element_by_id("J_SelectAll1"):
browser.find_element_by_id("J_SelectAll1").click() # 点击全选
break
except:
print(f"找不到购买按钮")
else:
print(f"请手动勾选需要购买的商品")
time.sleep(5)
def buy():
while True: # 结算
try:
if browser.find_element_by_id("J_Go"):
browser.find_element_by_id("J_Go").click() # 点击结算
print(f"结算成功,准备提交订单")
break
except:
pass
# 点击提交订单按钮
time.sleep(2)
while True:
try:
if browser.find_element_by_link_text('提交订单'):
browser.find_element_by_link_text('提交订单').click() # 点击提交订单
print(f"抢购成功,请尽快付款")
break
except:
print(f"再次尝试提交订单")
def pay():
time.sleep(5)
print("开始输入") # 输入密码,这里设置的密码为666666,可以自行更改
k.tap_key('6')
k.tap_key('6')
k.tap_key('6')
k.tap_key('6')
k.tap_key('6')
k.tap_key('6')
time.sleep(3)
k.tap_key(k.enter_key) # 回车确认支付
def scan():
m.click(1604, 422) # 鼠标点击打开二维码页面,以用来扫码登录
print(m.screen_size())
time.sleep(15)
'''
def get_join():
browser.find_element_by_id('fm-login-id').send_keys("1835929828@qq.com")
browser.find_element_by_id('fm-login-password').send_keys("666666")
time.sleep(3)
m.click(1433, 550)
time.sleep(10)
'''
if __name__ == '__main__':
login() # 打开网页,进行登录
scan() # 扫码登录,需要在15秒内完成登录
# get_join() # 输入账号密码登录
picking(0) # 勾选购物车
buy() # 购买物品(结算和提交订单)
pay() # 输入密码支付
这里淘宝账号登录的时候,需要手机扫码登录。
本来加了一个自动账号密码登录,但是淘宝貌似有检测,自动滑块验证失败。
- PyMouse(),鼠标对象,获取位置时,使用截图工具的像素即可。
- 关于定位网页中的元素,以及几种定位方法,参考链接:网页元素定位
- selenium操作时,需要睡眠几秒,不然页面反应不过来。