淘宝自动抢购, Webdriver浏览器常用的元素定位
#!/usr/bin/env python
'''
作者:张铭达
功能:淘宝秒杀购物
版本:0.2
日期2019-06-16
''' from selenium import webdriver
import time,datetime driver = webdriver.Chrome()
driver.maximize_window() username = '张铭达33333'
class TaoBao(object):
def __init__(self):
pass
def login(self):
driver.get('https://www.taobao.com')
time.sleep(0.5)
loginelement = driver.find_element_by_link_text("亲,请登录")
if loginelement:
loginelement.click()
while True:
try:
login_status = driver.find_element_by_link_text('张铭达33333')
print('已登录')
return True
except:
print('等待扫码或密码登录...')
time.sleep(1) def daojishi(self,buytime):
'''
:param buytime: 输入字符串时间
:return: 返回当前距离购买时间还有多少天,小时,分钟,秒
'''
daojishi = datetime.datetime.strptime(buy_time, '%Y-%m-%d %H:%M:%S') - datetime.datetime.now()
'''这个时间差为datetime.timedelta格式,返回值中days + seconds 为总计的时间,够一天的时间存在days里面,不足的存在seconds里面'''
days = daojishi.days
hour = daojishi.seconds // 3600 #不足一天,看有多少个小时。
mins = (daojishi.seconds % 3600) // 60 #不足一小时的看有多少个分钟
seconds = daojishi.seconds % 60 # 不足一分钟的时间看有多少秒
return days,hour,mins,seconds #返回值便于更直观看剩余多少时间:时分秒
def chose_commodity(self,commodity_list):
# '''勾选指定商品'''
if commodity_list:
for commodity in commodity_list:
commodity_path_id = '//label[@for="%s"]' % commodity
try:
if driver.find_element_by_xpath(commodity_path_id):
driver.find_element_by_xpath(commodity_path_id).click()
print('勾选:', commodity_path_id, '成功')
except:
print('勾选 %s 失败!' % commodity_path_id)
else:
# '''勾选购物车全部商品'''
if driver.find_element_by_id("J_SelectAll1"):
driver.find_element_by_id("J_SelectAll1").click() def buy_all(self,buy_time,commodity_list=None):
# driver.get("https://cart.taobao.com/cart.htm")
driver.find_element_by_id('mc-menu-hd').click() #点击购物车连接
while True:
#勾选商品
self.chose_commodity(commodity_list)
''' 对比当前时间到的话就点击结算,字符串可以直接比较时间大小'''
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
if now > buy_time:
print('正在购物......')
try:
# 点击结算按钮
if driver.find_element_by_id("J_Go"):
driver.find_element_by_id("J_Go").click()
time.sleep(0.5)
#点击提交订单按钮
driver.find_element_by_link_text('提交订单').click()
print('订单已提交,请付款')
except:
print('购物车没有商品或者已经提交。')
else:
days,hour,mins,seconds = self.daojishi(buy_time)
print('当前{} 距离 {} 倒计时还有{}天 {}小时 {}分钟 {}秒'.format(now,buy_time,days, hour, mins, seconds))
if days > 1 or hour > 1 or mins > 2:
time.sleep(60)
driver.refresh()
time.sleep(1) if __name__ == '__main__':
taobao = TaoBao()
if taobao.login():
commodity_list = ['J_CheckBox_1338514994390',
'J_CheckBox_1337098032426',
'J_CheckBox_1328527465471']
buy_time = '2019-06-18 23:59:59'
taobao.buy_all(buy_time,commodity_list)
# taobao.daojishi(buy_time)
go_shoping0.2
#!/usr/bin/env python
'''
作者:张铭达
功能:淘宝秒杀购物
版本:0.2
日期2019-06-16
''' from selenium import webdriver
import time,datetime driver = webdriver.Chrome()
driver.maximize_window() username = '张铭达33333'
class TaoBao(object):
def __init__(self):
pass
def login(self):
driver.get('https://www.taobao.com')
time.sleep(0.5)
loginelement = driver.find_element_by_link_text("亲,请登录")
if loginelement:
loginelement.click()
while True:
try:
login_status = driver.find_element_by_link_text('张铭达33333')
print('已登录')
return True
except:
print('等待扫码或密码登录...')
time.sleep(1) def daojishi(self,buytime):
'''
:param buytime: 输入字符串时间
:return: 返回当前距离购买时间还有多少天,小时,分钟,秒
'''
daojishi = datetime.datetime.strptime(buy_time, '%Y-%m-%d %H:%M:%S') - datetime.datetime.now()
'''这个时间差为datetime.timedelta格式,返回值中days + seconds 为总计的时间,够一天的时间存在days里面,不足的存在seconds里面'''
days = daojishi.days
hour = daojishi.seconds // 3600 #不足一天,看有多少个小时。
mins = (daojishi.seconds % 3600) // 60 #不足一小时的看有多少个分钟
seconds = daojishi.seconds % 60 # 不足一分钟的时间看有多少秒
return days,hour,mins,seconds #返回值便于更直观看剩余多少时间:时分秒
def chose_commodity(self,commodity_list):
# '''勾选指定商品'''
if commodity_list:
for commodity in commodity_list:
commodity_path_id = '//label[@for="%s"]' % commodity
try:
if driver.find_element_by_xpath(commodity_path_id):
driver.find_element_by_xpath(commodity_path_id).click()
print('勾选:', commodity_path_id, '成功')
except:
print('勾选 %s 失败!' % commodity_path_id)
else:
# '''勾选购物车全部商品'''
if driver.find_element_by_id("J_SelectAll1"):
driver.find_element_by_id("J_SelectAll1").click() def buy_all(self,buy_time,commodity_list=None):
# driver.get("https://cart.taobao.com/cart.htm")
time.sleep(1)
driver.find_element_by_partial_link_text('购物车').click()#点击购物车连接
# driver.find_element_by_id('mc-menu-hd').click() #点击购物车连接
time.sleep(0.5)
while True:
#勾选商品
self.chose_commodity(commodity_list)
''' 对比当前时间到的话就点击结算,字符串可以直接比较时间大小'''
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
if now > buy_time:
print('正在购物......')
try:
# 点击结算按钮
if driver.find_element_by_id("J_Go"):
driver.find_element_by_id("J_Go").click()
time.sleep(0.5)
#点击提交订单按钮
driver.find_element_by_link_text('提交订单').click()
print('订单已提交,请付款')
except:
print('购物车没有商品或者已经提交。')
else:
days,hour,mins,seconds = self.daojishi(buy_time)
print('当前{} 距离 {} 倒计时还有{}天 {}小时 {}分钟 {}秒'.format(now,buy_time,days, hour, mins, seconds))
if days > 1 or hour > 1 or mins > 2:
time.sleep(60)
driver.refresh()
time.sleep(1) if __name__ == '__main__':
taobao = TaoBao()
if taobao.login(): #如果登录成功就勾选购物车,并且下单
#商品列表lable标签 浏览器提前用开发者模式获取
commodity_list = ['J_CheckBox_1338514994390',
'J_CheckBox_1337098032426',
'J_CheckBox_1328527465471']
buy_time = '2019-06-18 23:59:59'
taobao.buy_all(buy_time,commodity_list)
# taobao.daojishi(buy_time)
0.3版本
三. 安装三大浏览器驱动driver
1.chromedriver 下载地址:https://code.google.com/p/chromedriver/downloads/list
2.Firefox的驱动geckodriver 下载地址:https://github.com/mozilla/geckodriver/releases/
3.IE的驱动IEdriver 下载地址:http://www.nuget.org/packages/Selenium.WebDriver.IEDriver/
---------------------
作者:huhu8812
来源:CSDN
原文:https://blog.csdn.net/azsx02/article/details/68947429
版权声明:本文为博主原创文章,转载请附上博文链接!
淘宝自动抢购, Webdriver浏览器常用的元素定位的更多相关文章
- Chrome浏览器插件开发-淘宝自动登录
浏览器插件的介绍 Chrome浏览器插件开发的准备工作 manifest.json配置介绍 页面如何注入scripts文件 一. 浏览器插件的介绍 浏览器插件是一种遵循一定规范的应用程序接口编写出来的 ...
- 淘宝自动登录2.0,新增Cookies序列化
前段时间时间为大家讲解了如何使用requests库模拟登录淘宝,而今天我们将对该功能进行丰富.所以我们把之前的那个版本定为1.0,而今天修改的版本定为2.0.版本的地跌意味着功能的升级,那今天的2.0 ...
- 利用Selenium+java实现淘宝自动结算购物车商品(附源代码)
转载请声明原文地址! 本次的主题是利用selenium+java实现结算购买购物车中的商品. 话不多说,本次首先要注意的是谷歌浏览器的版本,浏览器使用的驱动版本,selenium的jar包版本. ...
- Android高仿京东淘宝自动无限循环轮播控件的实现思路和过程
在App的开发中,很多的时候都需要实现类似京东淘宝一样的自动无限轮播的广告栏,所以就自己写了一个,下面是我自定义控件的实现思路和过程. 一.自定义控件属性 新建自定义控件SliderLayout继承于 ...
- python+selenium自动测试之WebDriver的常用API(基础篇一)
基于python3.6,selenium3.141,详细资料介绍查看官方API文档,点击这里 一.对浏览器操作 driver = webdriver.Chrome() # 初始化chrome driv ...
- Webdriver常用的元素定位
Webdriver常用定位元素的方法有以下八种: id.name.class name.tag name.link text.partial link text.xpath.class selecto ...
- java selenium webdriver第二讲 页面元素定位
自动化测试实施过程中,测试程序中常用的页面操作有三个步骤 1.定位网页上的页面元素,并存储到一个变量中 2.对变量中存储的页面元素进行操作,单击,下拉或者输入文字等 3.设定页面元素的操作值,比如,选 ...
- python+selenium自动测试之WebDriver的常用API(基础篇二)
本篇介绍一下python+selenium复杂操作的处理,基于python3.6,selenium3.141,详细资料介绍查看官方API文档,点击这里 一.常见特殊情况处理如iframe/弹窗处理 有 ...
- python(27) 抓取淘宝买家秀
selenium 是Web应用测试工具,可以利用selenium和python,以及chromedriver等工具实现一些动态加密网站的抓取.本文利用这些工具抓取淘宝内衣评价买家秀图片. 准备工作 下 ...
随机推荐
- python网络自动化运维之telnetlib实验(EVE-NG+pycharm)
运行环境: 物理机:win10 1903 网络设备:EVE-NG模拟器上运行思科三层路由器 网络设备OS版本:cisco ios(versions 15.6) python环境:pycharm 3.3 ...
- Codeforces 724G - Xor-matic Number of the Graph(线性基)
Codeforces 题目传送门 & 洛谷题目传送门 一道还算不套路的线性基罢-- 首先由于图不连通,并且不同连通块之间的点显然不可能产生贡献,因此考虑对每个连通块单独计算贡献.按照 P415 ...
- Codeforces 464E The Classic Problem(主席树+最短路+哈希,神仙题)
题目链接 题意:给出一张 \(n\) 个点 \(m\) 条边的无向图,第 \(i\) 条边连接 \(u_i,v_i\),边权为 \(2^{w_i}\),求 \(s\) 到 \(t\) 的最短路. \( ...
- 【基因组注释】ncRNA注释
目录 1. ncRNA 2. 软件 tRNA注释 rRNA注释 其他ncRNA注释 3. 注释 tRNA rRNA snRNA.miRNA等 4. snRNA.miRNA等结果的统计 1. ncRNA ...
- R语言hist重叠图作法
set.seed(1) h1<-hist(rnorm(1000,100,5)) h2<-hist(rnorm(1000,99,5)) plot(h2,col=rgb(255,0,0,50, ...
- 3.Median of Two Sorted Arrays Leetcode
难度系数:5星 /*************************************************************************** 题目:有两个排好序的数组,要求 ...
- Ubuntu apt代理apt-cacher-ng配置及使用
apt-cacher-ng是更强大的apt代理服务器的替代方案,例如squid-deb-proxy.如果您正在运行小型家庭或办公室网络,那就别无所求.它可能缺少一些更高级的功能,但是可以立即进行配置, ...
- 数据库SQL性能优化
1.in与exists的效率比较 in是把外表和内表作hash 连接,而exists 是对外表作loop 循环,每次loop 循环再对内表进行查询.一直以来认为exists 比in 效率高的说法是不准 ...
- android TabLayout设置选项卡之间的距离无效已解决
根据下面的链接设置完距离后无法生效 https://www.jb51.net/article/131304.htm layout <com.google.android.material.tab ...
- [学习总结]4、Android的ViewGroup中事件的传递机制(一)
本文主要针对dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent三个方法,通过简单的例子来简单的介绍下. 根据字面意思的理解,dispatchTo ...