详情内容
本工具为网页自动化测试工具,不仅仅是用于商抢购测试,也可用于其它的填表作,傻瓜式可DIY自助编辑过程,仅供测试之用!请勿用于非法途径!否则后果自负!
全DIY理念设计款全能抢购神器出世了!拥有它,你想抢啥就抢啥
功能特点:
1.不绑定单一品种
2.支持傻瓜式添加目标按钮和输入框
3.支持多步骤(意思就是随便你几步,反正自己爱怎么DIY就怎么DIY)
4.支持目标按钮文本傻瓜式定位(如果不懂css选择器,用这个也可以)
5.CSS选择器+目标文本双重定位,再也不怕错过这个按钮了
这部分仅供python有基础的人看,源码方式打开
支持库安装指令(如果pip都不懂的话那就请自学一下python基础):
pip install pyqt5 -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/
然后将chromedriver.exe放入python环境中的Scripts文件夹中
更新日志:
20201221更新说明:
1.修复了暂停按钮文字错误的BUG
2.重写了脚本逻辑(现在是安装顺序一个一个判断的,就是必须前面的点成功了才能走到下一步,这样更加节省资源速度更快)
3.增加了输入密码,输入文字的功能(如果造成损失请自负!可以帮忙输入密码或者输入数量,但是请谨慎使用,万一你突然不想买了呢,哈哈)
4.增加定时启动功能(别忘记了要点全部开始,不然到时间也不会启动)
5.增加提前刷新的功能,这个和定时启动搭配使用(有些东西是先预约,到点预约,或者到点后降价等情况,就需要刷新/定时这样就可以匹配上了)
6.增加一件关闭所有浏览器的功能(这样就不需要每次搞错了又要重开软件了)
7.现在所有的修改都会被记录下来,重开软件时会加载你的设置情况
2021 01 04更新说明2.1:
新年来的第一次更新,给大家带来更加高端大气的版本,主要是吸收了一些网友的建议和反馈的不人性化的BUG,因此进行了以下改动
1.现在的目标按钮和CSS配置组合可以临时添加和删除了(以前是必须先设置然后再增加浏览器,这可以避免在出错的时候反复重开,浪费精力,当然我还是建议提前设置,更不容易出错!)
2.现在目标按钮文本支持##关键字,用来让浏览器自动拖动滚动条,将网页全部加载渲染(为了解决某些网页,加载不完整,需要的目标按钮没加载出来导致定位失败,比如京东的提交订单 注意%%,$$可以和##同时存在)
3.优化整体逻辑,杜绝bug
2021 02 21更新说明:
1.增加毫秒级的定时
2.加快判断速度,现在占用资源更多了,所以多开党要看情况要不要升级
3.新增一个时间校准工具.支持北京/京东/淘宝时间的校准(请配合毫秒级的定时来用,每个人电脑不一样不好计算误差,这样更加精准,误差更低!)
2021 03 26更新说明(可能是最后一次更新了,最近比较忙,并且怕有人加验证用来搞违法犯罪倒卖的事情):
1.增加自定义等待延时功能具体看下方的图,如果有时候还没缓冲完就点击成功了,可以在前面设置一个等待时间
2.微调速度(之前调的太过了),还有一些日志方面的改动
3.新增拖动配置功能(现在支持直接拖动.pkl文件进入列表框,一键完成配置的读取,方便读取网友的脚本配置懂的都懂)
4.支持最新89版本的google chrome
4.工具定位声明:浏览器自动化傻瓜式设计脚本,可用来随意控制多个浏览器,并非只能用来购物!
软件截图:
下面是部分源码打开的供大家参考!
main.py 这是入口
import threading,sys,os,pickle,time
from codes.panicBuying import PanicBuying
from PyQt5.QtWidgets import QApplication,QMainWindow,QInputDialog,QLineEdit,QMessageBox,QTableWidgetItem
from PyQt5.QtCore import pyqtSignal,QObject,QDateTime
from PyQt5.QtGui import QIcon
from ui.main import Ui_MainWindow
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
class Myignals(QObject):
#定义一种信号,然后确定参数的类型
log_add=pyqtSignal(str)
def init_window_main():
global ui_main,window_main
window_main.setWindowTitle('全能抢购神器-请自觉关闭杀毒软件以免造成意外卡死![url=http://www.52pojie.cn]www.52pojie.cn[/url]')
window_main.setWindowIcon(QIcon('logo.ico'))
#加载数据
load()
# 自动调节宽度
ui_main.tab_mban.resizeColumnsToContents()
#绑定按钮信号
ui_main.bt_openWeb.clicked.connect(openWeb)
ui_main.bt_start.clicked.connect(true_or_Flase)
window_main.closeEvent=close
ui_main.bt_close_all.clicked.connect(reset)
ui_main.tab_mban.cellChanged.connect(cellChanged)
ui_main.bt_add.clicked.connect(add_line)
ui_main.bt_sub.clicked.connect(sub_line)
def reset():
global driver
# 关闭所有的浏览器
for item in driver:
item.quit()
close_all=True
start = False
ui_main.bt_start.setText('2.全部开始')
driver=[]
log_add('重置成功!')
def cellChanged(row, column):
#自动调节宽度
ui_main.tab_mban.resizeColumnsToContents()
def add_line():
count=len(ui_main.tab_mban.selectedItems())
if count > 0:
#插入一行
row = ui_main.tab_mban.currentRow()
print(row)
ui_main.tab_mban.insertRow(row)
else:
ui_main.tab_mban.setRowCount(ui_main.tab_mban.rowCount() + 1)
def sub_line():
if ui_main.tab_mban.rowCount() > 0:
count = len(ui_main.tab_mban.selectedItems())
if count > 0:
row = ui_main.tab_mban.currentRow()
print(row)
ui_main.tab_mban.removeRow(row)
else:
ui_main.tab_mban.setRowCount(ui_main.tab_mban.rowCount() - 1)
def load():
'''
读取配置项
:return:
'''
try:
with open(dataPath,'rb')as f:
setting = pickle.load(f)
sets=setting['items']
length = len(sets)
print(setting)
if length>0:
#给这些控件初始化
ui_main.ed_url.setText(setting['url'])
ui_main.dte_time.setDateTime(QDateTime.fromString(setting['dte_time'],'hh:mm:ss'))
ui_main.cb_sfds.setChecked(setting['cb_sfds'])
ui_main.cb_tqsx.setChecked(setting['cb_tqsx'])
#清空
ui_main.tab_mban.clearContents()
ui_main.tab_mban.setRowCount(length)
ui_main.tab_mban.setColumnCount(3)
print(sets)
for i,im in enumerate(sets):
store = QTableWidgetItem(im['store'])
ui_main.tab_mban.setItem(i, 0, store)
text=QTableWidgetItem(im['text'])
ui_main.tab_mban.setItem(i, 1, text)
css = QTableWidgetItem(im['css'])
ui_main.tab_mban.setItem(i, 2, css)
except Exception as err:
print(err)
def save():
'''
保存配置项
:return:
'''
items = []
# 将表格的内容存在items中
length = ui_main.tab_mban.rowCount()
for i in range(length):
try:
items.append({'store': ui_main.tab_mban.item(i, 0).text(),
'text': ui_main.tab_mban.item(i, 1).text(),
'css': ui_main.tab_mban.item(i, 2).text()})
except:
pass
setting={'items':items,
'url':ui_main.ed_url.text(),
'dte_time':ui_main.dte_time.text(),
'cb_sfds':ui_main.cb_sfds.isChecked(),
'cb_tqsx':ui_main.cb_tqsx.isChecked()}
with open(dataPath, 'wb')as f:
pickle.dump(setting, f)
print(setting)
def close(enent):
#关闭所有的浏览器
for item in driver:
item.quit()
#保存数据
save()
def openWeb():
global driver,ms,close_all
close_all = False
#获取链接
url=ui_main.ed_url.text()
#获取设置的时间
time_wait=ui_main.dte_time.text()
#获取是否定时
wait=ui_main.cb_sfds.isChecked()
# 获取是否提前刷新
refresh = ui_main.cb_tqsx.isChecked()
# 将表格的内容存在items中
items=[]
length=ui_main.tab_mban.rowCount()
for i in range(length):
items.append({'store':ui_main.tab_mban.item(i,0).text(),'text':ui_main.tab_mban.item(i,1).text(),'css':ui_main.tab_mban.item(i,2).text()})
# 创建浏览器
try:
driver.append(webdriver.Chrome())
except:
ui_main.ed_log.append('启动浏览器失败!请确定你的有安装谷歌浏览器和根目录有chromedriver.exe,并且版本大于等于87')
ui_main.ed_log.append('浏览器下载:[url]https://www.google.cn/chrome/'[/url])
ui_main.ed_log.append('chromedriver.exe下载:[url]https://www.lanzoui.com/isdWeiim1ji'[/url])
driver=[]
return
# 创建线程
t.append(threading.Thread(target=hw.start,
args=(str(len(driver)),
driver[-1],
ms,
url,
items,
time_wait,
wait,
refresh)))
# 设置主线程关闭时,它也跟着关闭
t[-1].setDaemon(True)
# 开始运行
t[-1].start()
ui_main.ed_log.append('现在请自己选择好产品的尺寸,规格,型号等参数,然后点全部开始,别关闭浏览器!')
def true_or_Flase():
global start
if len(driver)==0:
log_add('请先增加浏览器')
return
if start==True:
ui_main.bt_start.setText('2.全部开始')
log_add('已经全部暂停!')
start = False
else:
ui_main.bt_start.setText('2.全部暂停')
log_add('已经全部开始!')
start =True
hw.start_kg =start
def log_add(text):
print(text)
ui_main.ed_log.append(text)
if __name__ == '__main__':
dataPath='datas/set.pkl'
# 自定义一个信号
ms = log_sg = Myignals()
# 绑定日志更新的信号
ms.log_add.connect(log_add)
#实例化抢购对象
hw = PanicBuying()
t = []#线程容器
driver = []#浏览器容器
start=False#全局暂停和开始的开关
close_all=False
app=QApplication(sys.argv)
window_main = QMainWindow() # 主界面
ui_main = Ui_MainWindow() # 实例化
ui_main.setupUi(window_main) # 运行里面的代码
init_window_main() # 初始化和对接代码功能
with open('datas\main.qss', 'r')as f:
style = f.read()
window_main.setStyleSheet(style)
window_main.show()
sys.exit(app.exec_())
123资源整合网-全网知识付费项目平台虚拟资源淘宝虚拟货源网赚资源整合中心 » Python茅台/Mate40全能抢购助手源码