Selenium是一款web应用自动化测试的工具库,Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,主流的浏览器都支持selenium。那么除了将其用于测试上,我们还可以用来做一些频繁机械反复的工作,例如每隔一段时间查看购物平台的商品详情页面,查看到货状态,有货就加购然后下单,下单成功发邮件提醒付款。
眼下就有一个需求:疫情当前,口罩稀缺,商家不定时上货,想蹲口罩,又不想整天蹲着页面看,机械而无聊。
前排提示
以下介绍的方法适用于以下情形:
- 平台商家不定时上货的情况,如果是定时上货,估计瞬时流量很大,利用该工具恐难胜任。
- 应用的网页偏复杂,不太容易使用简单的请求获取商品信息,毕竟如果一个请求就能获取到商品信息何必利用Selenium
注意:本方法仅供个人娱乐学习
我的环境:
- Windows10
- Python 3.6.6
- Chrome 78.0.3904.97(正式版本) (64 位)
安装浏览器+驱动
一般推荐Chrome+chromedriver或者Firefox+相应driver,我之前已经安装了Chrome,就用它了。如果你没安装过,百度一下!So Easy。
安装驱动
-
安装驱动前先看chrome版本
点击chrome右上侧菜单按钮->帮助->关于Google Chrome(G)查看浏览器版本
-
打开chromedriver下载,选择相应版本的驱动器下载。没有对应版本怎么办?找最近的或者去其他网站找到也行,我下载的驱动器版本为78.0.3904.70,得到后缀
.zip
的压缩包 -
将解压缩得到的chromedriver.exe程序放到Python的安装目录下。什么?不知道安装在哪了,问题不大。搜索框搜索python,然后鼠标右键选择打开文件所在位置,至此驱动安装完毕。
配置系统环境
选择我的电脑鼠标右键->属性->高级系统设置->环境变量->系统变量
添加变量Chrome,值为chrome的安装位置,然后保存退出即可。
安装Selenium模块
使用管理员权限打开cmd运行窗口,运行以下命令即可。
1 |
|
开始写脚本
以京东平台的页面为例进行脚本撰写
1 |
|
代码说明:
main函数定义商品url的链接列表,一次登录,循环检查商品列表的到货状态,有一个商品买到了即程序结束。
实现了以下功能:
- 用户登录 login()
- 查看商品状态 check()
- 加购物车并结算 buy()
- 邮件通知付款 sendmail()
有待完善添加:
- 自动输入付款密码,京东使用了密码安全控件,无法直接获取到密码输入框的input元素
- 页面加载超时处理
- 页面加载失败重载处理
- 给每个商品添加状态,而不是一个完成即程序结束
- 。。。。。。