MacOS: python+chrome淘宝购物车自动结算
selenium的安装
Selenium是一个开源的自动化测试工具,虽然相比其他的方法,速度不是特别快,但简单易用,小白也可以学会。
网上有不少用pip方式安装selenium的,其实selenium本质就是第三方库,我们可以采用pycharm自带方式来安装
先随意的建一个工程:点新建项目
改个名字 比如test
右键点击文件夹,新建一个python文件
点击文件(file )–> 默认设置(setting)
选好编译器,我安装了python3.7 ,也可以使用系统自带的2.7,在再点击加号,来搜索selenium库
按下左下角的install package即可。
谷歌浏览器驱动chromedriver的安装
首先在电脑上安装完谷歌浏览器之后,需要确认下版本。
在右上角的设置-- 帮助–关于谷歌 中可以查看
驱动下载地址
在驱动下载页面找到自己浏览器对应的版本,比如我的是86.0.4240.80
找到自己对应的系统,这里下的是Mac64
下载完后解压,把里面的唯一一个文件chromedriver拖到/usr/local/bin/文件夹里
可以在终端上输入:
open /usr/local/bin/
记得双击打开一下这个文件,没什么用处,只是为了保证不会因为安全权限受限而导致不能使用。一般网上下载的都会被受限,需要用户主动打开一次授权一下。
配置环境变量
打开终端,输入: cd ~ 回车,会进入~文件夹
然后输入:touch .bash_profile,回车执行后,
再输入:open -e .bash_profile 回车
会在TextEdit中打开这个文件(如果以前没有配置过环境变量,那么这应该是一个空白文档)。如果有内容,请在结束符前输入,如果没有内容,请直接输入如下语句:
export PATH=$PATH:/usr/local/bin/chromedriver
测试一下
在刚才Pycharm中建立的python文件中输入代码
import os
from selenium import webdriver
import datetime
import time
chromedriver = r"/usr/local/bin/chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
buytime = "2020-11-11 00:00:00"
def login():
driver.get("https://login.taobao.com/")
print('已打开淘宝网')
#设置等待时间,用于手动登录
time.sleep(30)
driver.get("https://cart.taobao.com/cart.htm")
if driver.find_element_by_id("J_SelectAll1"):
driver.find_element_by_id("J_SelectAll1").click()
time.sleep(3)
if driver.find_element_by_link_text("结 算"):
driver.find_element_by_link_text("结 算").click();
now = datetime.datetime.now()
print('login success:', now.strftime('%Y-%m-%d %H:%M:%S'))
buy_on_time(buytime)
def buy_on_time(buytime):
while True:
now = datetime.datetime.now()
if now.strftime('%Y-%m-%d %H:%M:%S') == buytime:
while True:
try:
s1 = time.time()
driver.refresh() #刷新页面
driver.find_element_by_link_text('提交订单').click()
s2 = time.time()
print( '用时:{0}s'.format( s2 - s1 ) )
except:
time.sleep(0.07)
time.sleep(0.1)
login()
注意:这里结算时间和地址都是根据实际情况需要更改的。
总结
selenium作为一种自动化检测框架,可以帮助人们实现自动点击交易等过程。所谓的秒杀时间就是 浏览器应时间+用例查找时间+代码执行时间+url发送时间。经过比对发现 “浏览器响应时间”是影响秒杀时间的主要因素,只有消除它才能进一步提升速度。
运行代码后会显示浏览器正在受自动测试软件控制。这一方法目前还是可行的,但之后可能会有相关的检测手段导致失效。仅供学习交流使用,勿作他用。