熟悉使用Webdriver ---- 商品自动秒杀
2021-04-01 13:27
标签:第三方 商品 观察 第三方模块 物流 pass web submit mic 前几天下载了Webdriver模块,经过简单的研究,发现这个模块可以做很多有意思的事情,下面我就用一个实例来理解webdriver的此处操作(完整代码在文章末尾)。 *浏览器:谷歌chrome浏览器 *预先安装模块:Webdriver(不会安装请看我的上一条博客) *编程语言:Python 首先观察正常购物流程(以京东商城为例) 打开京东网址(www.jd.com)→点击登录→选择账号密码登录→输入账号密码→打开购物车,选择想要购买的物品→点击去结算→付款购买 1.首先导入第三方模块,指定webdriver位置 2、打开京东网址 3.点击登录选项 首先将鼠标移动至登录选项,右击检查 发现可以根据文字内容定为到选项 4.进入登录界面,自动输入账号密码,登录账号 右击检查,发现选项可以通过文本定位,分别由name属性进行定位,使用ID进行定位 在我们点击登录之后,可能会出现一个滑块验证的环节,此环节可以用机器学习的方法自动通过验证,但是由于现在只是熟悉webdriver操作,可使用手动操作通过验证。 即在点击之后,添加延时 time.sleep(5) 并在5s之内通过滑块验证 5.点击购物车,勾选想要购买的物品,点击付款 购物车可以通过文本定位 然后要勾选要下单的物品,点击去结算 勾选框我使用的是谷歌浏览器的xpath helper插件来进行定位,结算键可以同样使用文本来定位 此时若直接使用之前的定位方法来勾选和结算,代码运行后会报错,这是因为点击我的购物车之后,打开了一个新的网页,但是代码执行的默认网页还是在www.jd.com 所以程序找不到我们定位的位置,所以会提示错误 该段的正确代码是 6.封装函数 将以上函数封装到模块中,方便调用 7.定义模块调用 完整代码 此段代码只到结算步骤,只供熟悉webdriver操作使用 熟悉使用Webdriver ---- 商品自动秒杀 标签:第三方 商品 观察 第三方模块 物流 pass web submit mic 原文地址:https://www.cnblogs.com/cherish-hao/p/12568532.html1 from selenium import webdriver
2 import time
3
4 #将账号密码赋给变量name、password
5 password = ‘京东密码‘
6 name = ‘京东账号‘
7 #指定webdriver位置
8 driver = webdriver.Chrome(‘/home/chromedriver‘)
driver.get(‘https://www.jd.com/‘)
#点击登录选项
driver.find_element_by_link_text(‘你好,请登录‘).click()
1 #点击账户登录
2 driver.find_element_by_link_text(‘账户登录‘).click()
3 #输入账号密码
4 driver.find_element_by_id(‘loginname‘).send_keys(num)
5 driver.find_element_by_id(‘nloginpwd‘).send_keys(pwd)
6 #点击登录键
7 driver.find_element_by_id(‘loginsubmit‘).click()
8 #延时5s
9 time.sleep(5)
driver.find_element_by_link_text(‘我的购物车‘).click()
#使用xpath语法定位复选框
driver.find_element_by_xpath("/html[@class=‘ jd_retina‘]/body/div[@id=‘container‘]/div[@class=‘cart-warp‘]/div[@class=‘w‘]/div[@id=‘jd-cart‘]/div[@class=‘cart-main cart-main-new‘]/div[@id=‘cart-list‘]/div[@id=‘cart-item-list-01‘]/div[@id=‘vender_8888‘]/div[@class=‘item-list‘]/div[@id=‘product_promo_50077743033‘]/div[@id=‘product_100008492922‘]/div[@class=‘item-form‘]/div[@class=‘cell p-checkbox‘]/div[@class=‘cart-checkbox‘]/input[@class=‘jdcheckbox‘]").click()
#点击去结算
driver.find_element_by_link_text(‘去结算‘).click()
#保存初始网页
wnhandle = driver.current_window_handle
#点击我的购物车
driver.find_element_by_link_text(‘我的购物车‘).click()
#保存打开的所有网页
all_handle = driver.window_handles
#遍历保存的网页
for handle in all_handle:
#判断当前打开的网页是否为初始网页
if handle != wnhandle:
#若为新打开的网页,则切换到新网页
driver.switch_to.window(handle)
#设置延时
time.sleep(2)
#勾选复选框
driver.find_element_by_xpath("/html[@class=‘ jd_retina‘]/body/div[@id=‘container‘]/div[@class=‘cart-warp‘]/div[@class=‘w‘]/div[@id=‘jd-cart‘]/div[@class=‘cart-main cart-main-new‘]/div[@id=‘cart-list‘]/div[@id=‘cart-item-list-01‘]/div[@id=‘vender_8888‘]/div[@class=‘item-list‘]/div[@id=‘product_promo_50077743033‘]/div[@id=‘product_100008492922‘]/div[@class=‘item-form‘]/div[@class=‘cell p-checkbox‘]/div[@class=‘cart-checkbox‘]/input[@class=‘jdcheckbox‘]").click()
#点击结算
driver.find_element_by_link_text(‘去结算‘).click()
def login_in(self,num,pwd):
def run_driver(self,num,pwd):
self.login_in(num,pwd)
1 from selenium import webdriver
2 import time
3
4 name = ‘账号‘
5 password = ‘密码‘
6
7 #指定webdriver位置
8 driver = webdriver.Chrome(‘/home/jmhao/chromedriver‘)
9 #打开京东网址
10 driver.get(‘https://www.jd.com/‘)
11
12 class pay:
13 #登录模块
14 def login_in(self,num,pwd):
15 driver.find_element_by_link_text(‘你好,请登录‘).click()
16 time.sleep(1)
17 driver.find_element_by_link_text(‘账户登录‘).click()
18 time.sleep(1)
19 driver.find_element_by_id(‘loginname‘).send_keys(num)
20 driver.find_element_by_id(‘nloginpwd‘).send_keys(pwd)
21 time.sleep(1)
22 driver.find_element_by_id(‘loginsubmit‘).click()
23 time.sleep(5)
24 wnhandle = driver.current_window_handle
25 driver.find_element_by_link_text(‘我的购物车‘).click()
26 all_handle = driver.window_handles
27 for handle in all_handle:
28 if handle != wnhandle:
29 driver.switch_to.window(handle)
30 time.sleep(2)
31 driver.find_element_by_xpath("/html[@class=‘ jd_retina‘]/body/div[@id=‘container‘]/div[@class=‘cart-warp‘]/div[@class=‘w‘]/div[@id=‘jd-cart‘]/div[@class=‘cart-main cart-main-new‘]/div[@id=‘cart-list‘]/div[@id=‘cart-item-list-01‘]/div[@id=‘vender_8888‘]/div[@class=‘item-list‘]/div[@id=‘product_promo_50077743033‘]/div[@id=‘product_100008492922‘]/div[@class=‘item-form‘]/div[@class=‘cell p-checkbox‘]/div[@class=‘cart-checkbox‘]/input[@class=‘jdcheckbox‘]").click()
32 driver.find_element_by_link_text(‘去结算‘).click()
33
34 #运行
35 def run_driver(self,num,pwd):
36 self.login_in(num,pwd)
37
38
39 if __name__ == ‘__main__‘:
40 jd = pay()
41 jd.run_driver(name, password)
下一篇:js自定义日历组件
文章标题:熟悉使用Webdriver ---- 商品自动秒杀
文章链接:http://soscw.com/index.php/essay/70946.html