51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2769|回复: 3
打印 上一主题 下一主题

使用Selenium实现淘宝抢单

[复制链接]
  • TA的每日心情
    无聊
    3 天前
  • 签到天数: 1019 天

    连续签到: 3 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2020-7-22 17:19:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    最近,小明为了达成小姐姐的愿望,在某宝买到心仪的宝贝,再加上又迷上了python,就通过python轻而易举地实现了(个人声明:对Java来说,这并不是背叛)。
      需求分析&前期准备
      需求其实很简单,正常购物。那我们平常的购物流程如下所示:
    开始之前,我们需要准备一下程序运行环境。


      环境
      系统:Windows/Mac OS
      Python版本:3.7.2
      为了让程序模拟我们每一步操作,给大家介绍一个利器:Selenium
      Selenium测试同学应该会感觉特别亲切。它是一个自动化测试工具,通过它我们可以驱动浏览器执行特定的动作,如点击、下拉等等操作,所见即所得。
      Selenium的安装
      运行如下命令:
    1. pip install selenium
    复制代码
    但若想使用Selenium成功调用Chrome浏览器完成相应的操作,我们还需要一个媒介与浏览器对接。小明本次使用的是Chrome浏览器,因此就需要通过ChromeDriver来驱动。
      ChromeDriver的安装
      这里是谷歌浏览器ChromeDriver的官方下载地址:
      https://chromedriver.storage.googleapis.com/index.html
      我们需要根据自己的Chrome浏览器版本,找到相应版本的ChromeDriver,再根据你电脑系统的平台类型进行下载、解压。
      windows:将其放置在Python安装路径下Scripts文件夹下
      Mac OS:将其放置在/usr/local/bin下
      环境配置到此结束,小明编写了一个python脚本,用来验证环境搭建是否成功:

    1. from selenium import webdriver

    2.   # 打开Chrome浏览器

    3.   if __name__ == '__main__':

    4.   browser = webdriver.Chrome()
    复制代码
    运行代码后,如果成功打开了一个新的浏览器,就证明我们的环境安装的没问题,接下来就可以愉快的购物了。
      脚本编写
      对比上面淘宝购物流程图,对应代码如下:
      打开淘宝网站

    1. browser.get("https://www.taobao.com")
    复制代码
    登录
      首先是跳转到登陆页

    1. browser.find_element_by_link_text("亲,请登录").click()
    复制代码
    登录方式选择二维码
    1. browser.find_element_by_class_name("icon-qrcode").click()
    复制代码
     用手机进行扫码成功之后进行下一步。
      登录成功后,打开购物车

    1.  browser.get("https://cart.taobao.com/cart.htm")
    复制代码
    勾选商品
    1. browser.find_element_by_id("J_SelectAll1").click()
    复制代码
    推荐选择全选,但如果你的购物车商品比较多,又不想全选购买,那就暂先手动勾选想要下单的商品??。
      结算

    1. browser.find_element_by_link_text("结 算").click()
    复制代码
    提交订单
    1. browser.find_element_by_link_text('提交订单').click()
    复制代码
    只要下单成功,接下来的付款,不用着急,只要在规定的时间内支付就好。
      以上就是完整购物的流程。那秒杀是如何实现呢?
      秒杀的实现
      思路其实很简单,就是在正常购物的基础上增加一个时间的判断:如果当前时间到了指定的时间点,就触发下单。
      获取当前时间,需要使用到datetime这个内置模块,代码如下:

    1.   import datetime

    2.   now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
    复制代码
    代码梳理
      定义一个login函数,用来登录
      定义一个picking函数勾选购物车中的商品
      定义一个buy函数等待抢购时间,定时秒杀
      完整代码请点击访问我的github

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-17 03:34 , Processed in 0.080454 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表