淘宝自动抢购, 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等工具实现一些动态加密网站的抓取.本文利用这些工具抓取淘宝内衣评价买家秀图片. 准备工作 下 ...
随机推荐
- 从零开始学Kotlin第七课
1.强制类型转换需要在后面加两个感叹号 2.如果需要在java代码调用kotlin的方法时候使用文件名+kt.方法 3.object 类名 是创建匿名内部类的写法 调用 传入class对象 4.在to ...
- 面试官:Java 线程如何启动的?
摘要:Java 的线程创建和启动非常简单,但如果问一个线程是怎么启动起来的往往并不清楚,甚至不知道为什么启动时是调用start(),而不是调用run()方法呢? 本文分享自华为云社区<Threa ...
- 【7】基于NGS检测体系变异解读和数据库介绍
目录 解读相关专业术语 体系变异解读规则 体系变异和用药解读流程 主要数据库介绍 解读相关专业术语 2个概念:胚系.体系突变 4种变异类型:SNV.Indel.融合/SV(大的易位/倒位/缺失).CN ...
- pyquery解析库的介绍和使用
### pyquery的介绍和使用 ## 测试文本 text = ''' <html><head><title>there is money</title&g ...
- 18-Rotate Array-Leetcode
Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array ...
- MongoDB的搭建、参数
Mongodb官网:https://www.mongodb.com/ mkdir -r /data/db touch /data/log tar -zxvf mongodb-linux-x86_6 ...
- python第三天 列表和元组
枚举 for in enumerate 循环输出字符串的内容并且输出它的索引信息: #判断索引为5的字符串是不是"您" is in Python提供了⼤量的内置数据结构,包含了列表 ...
- 业务逻辑审批流、审批流、业务、逻辑、面向对象、工作方式【c#】
------需求分析:--------1.先按照实际线下流程说这是什么事情,实际要干什么.2.再转换为面向对象-页面的操作流程,演示demo3.再与相关人员沟通是否可行需要什么地方修正.4.最终:线上 ...
- C#判断是否有中文
using System.Text.RegularExpressions; Regex reg = new Regex(@"[\u4e00-\u9fa5]"); if (reg.I ...
- MapReduce02 序列化
目录 MapReduce 序列化 概述 自定义序列化 常用数据序列化类型 int与IntWritable转化 Text与String 序列化读写方法 自定义bean对象实现序列化接口(Writable ...