淘宝自动抢购, 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等工具实现一些动态加密网站的抓取.本文利用这些工具抓取淘宝内衣评价买家秀图片. 准备工作 下 ...
随机推荐
- 微信小程序中途加入云开发之坑
一开始未使用云开发的小程序项目,之后想使用云开发能力时,要先删除对应在开发者工具中的项目(先压缩备份源码!),再用开发者工具重新创建,很多时候都需要用这种方式进行处理
- 为了拿捏 Redis 数据结构,我画了 40 张图(完整版)
大家好,我是小林. Redis 为什么那么快? 除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis 能高效的处理. ...
- 实现一个简单的类似不蒜子的PV统计器
内部的放到gitlab pages的博客,需要统计PV,不蒜子不能准确统计,原因在于gitlab的host设置了strict-origin-when-cross-origin, 导致不蒜子不能正确获取 ...
- 《python编程从入门到实践》读书实践笔记(二)
本文是<python编程从入门到实践>读书实践笔记11章的内容,主要包含测试,为体现测试的重要性,独立成文. 11 测试代码 写在前面的话,以下是我这些年开发中和测试相关的血泪史. 对于一 ...
- admixture 群体结构分析
tructure是与PCA.进化树相似的方法,就是利用分子标记的基因型信息对一组样本进行分类,分子标记可以是SNP.indel.SSR.相比于PCA,进化树,群体结构分析可明确各个群之间是否存在交流及 ...
- [linux] rm -rf删除软链接无权限?
一个很简单的命令,使用频率非常高,但一没注意就会失策. 我将别人盘下的list目录软连接到自己盘中,想要删除时: rm -rf list/ #输入时自然地用tab键补全 结果: 试了多次也删除不了,最 ...
- 49-Reverse Linked List II
Reverse Linked List II My Submissions QuestionEditorial Solution Total Accepted: 70579 Total Submiss ...
- C#页面缓存设置
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Sessioninfo(); } Session.R ...
- 使用Rapidxml重建xml树
需求 : 重建一棵xml树, 在重建过程中对原来的标签进行一定的修改. 具体修改部分就不给出了, 这里只提供重建部分的代码 code : /****************************** ...
- 在隐藏导航栏的控制器中,调用UIIMagePickerController,出现导航栏变透明的问题
在隐藏导航栏的控制器中,调用UIIMagePickerController,出现导航栏变透明的问题 解决办法 #pragma mark - UIImagePickerController Delega ...