selenium是一款web自动化测试工具,可以很方便地模拟真实用户对浏览器进行操作,它支持各种主流浏览器:IE、Chrome、Firefox、Safari、Opera等。

selenium有多种编程语言的客户端驱动,编写自动化脚本语法简洁,其中python的selenium库便非常的受欢迎。

你可以使用selenium做web测试或者爬虫,自动抢票、自动下单也可以用selenium来做。

演示自动打开淘宝网(文末会有秒抢流程):

使用Selenium实现自动化测试,需要3个要素:

1.selenium客户端或者与特定编程语言绑定的客户端驱动,可以是python,java,js等;

2.浏览器驱动, 这个驱动是根据不同的浏览器开发的,不同的浏览器使用不同的webdriver驱动程序且需要对应相应的浏览器版本;

3.浏览器,目前selenium支持市面上大多数浏览器,如:火狐,IE等;

安装selenium

可以使用pip或conda命令安装selenium:

pip install selenium

安装浏览器驱动

Selenium调用浏览器必须有一个webdriver驱动文件,下载好后把驱动程序放到python安装目录里即可。

各大浏览器驱动下载地址:
Firefox: https://github.com/mozilla/geckodriver/releases/

Chrome: https://sites.google.com/a/chromium.org/chromedriver/

IE: http://selenium-release.storage.googleapis.com/index.html

以Chrome为例:

先在设置里查看Chrome版本:

然后下载对应的chromedrive,可以在淘宝的镜像网站下载: http://npm.taobao.org/mirrors/chromedriver/

找到对应的版本号下载,解压到python安装目录里,或者anaconda安装目录scripts文件夹里。

selenium操作浏览器

在notebook中进行selenium的脚本编写,可以随写随调,非常方便。

首先需要从selenium中导入webdriver模块:

from selenium import webdriver

然后打开浏览器:

browser = webdriver.Chrome()

最后可以打开某网址:

browser.get("https://www.taobao.com/")

针对浏览器的主要操作方法:

  • 创建浏览器对象:driver = http://webdriver.xxx()
  • 窗口最大化:maximize_window()
  • 获取浏览器尺寸:get_window_size()
  • 设置浏览器尺寸:set_window_size()
  • 获取浏览器位置:get_window_position()
  • 设置浏览器位置:set_window_position(x,y)
  • 关闭当前标签/窗口:close()
  • 关闭所有标签/窗口:quit()

selenium定位元素

因为selenium是模仿真实点击浏览器的行为,所以必须要先定位网页元素,才能进行各种操作。

「定位页面元素的8种主要方式」

  • id定位:driver.find_element_by_id(value)
  • name属性值定位:driver.find_element_by_name(value)
  • 类名定位: driver.find_element_by_class_name(value)
  • 标签名定位: driver.find_element_by_tag_name(value)
  • 链接文本定位:driver.find_element_by_link_text(value)
  • 部分链接文本:driver.find_element_by_partial_link_text(value)
  • xpath路径表达式:driver.find_element_by_xpath(value)
  • css选择器:driver.find_element_by_css_selector(value)

selenium操作网页

定位元素后,需要对网页进行各种操作,比如点击、刷新、保存等。

点击展开新的页面,点击方法:element.click()

其他主要操作方法:

  • 请求某个url:driver.get(url)
  • 刷新页面操作:refresh()
  • 回退到之前的页面:back()
  • 前进到之后的页面:forward()
  • 获取当前访问页面url:current_url
  • 获取当前浏览器标题:title
  • 保存图片:get_screenshot_as_png()/get_screenshot_as_file(file)
  • 网页源码:page_source

使用selenium抢购商品(只供学习,不保证效果)

  1. 导入selenium相关模块
# 导入库
from selenium import webdriver
import datetime
import time打开chrome浏览器
# 记录时间
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
# 打开chrome
browser = webdriver.Chrome()

2. 登录淘宝

# 登录
def login():# 打开淘宝首页,通过扫码登录browser.get("https://www.taobao.com/")time.sleep(3)# 打开登录界面find_login = browser.find_element_by_link_text("亲,请登录")if find_login:find_login.click()print("请扫码登录")time.sleep(10)login()

3. 选择购物车列表

# 选择购物车列表
def picking(method):# 是否全选购物车if method == 0:while True:try:if browser.find_element_by_id("J_SelectAll1"):browser.find_element_by_id("J_SelectAll1").click()print('全选购物车成功')breakexcept:print(f"找不到购买按钮")else:print(f"请手动勾选需要购买的商品")time.sleep(1)

4. 点击结算按钮

# 点击结算按钮
def settlement():while True:try:if browser.find_element_by_id('J_SelectedItemsCount').text >= '1':browser.find_element_by_link_text("结 算").click()print(f"结算成功,准备提交订单")breakexcept:pass

5. 点击提交订单按钮

# 点击提交订单按钮
def submitting():while True:try:if browser.find_element_by_link_text('提交订单'):browser.find_element_by_link_text('提交订单').click()print(f"抢购成功,请尽快付款")breakexcept:print(f"再次尝试提交订单")

6. 开始执行抢购

def run(times):# 打开购物车列表页面print('正在抢购!')browser.get("https://cart.taobao.com/cart.htm")time.sleep(3)while True:now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')# 对比时间,时间到的话就点击结算if now > times:# 全选购物车picking(0)# 点击结算按钮settlement()# 提交订单submitting()print(now)break

结论

selenium还有很多强大的功能,后续会继续分享,也期待大家留言说说你的selenium使用心得。

最后补充一句,因为selenium涉及操作网页,所以需要使用者有一定的html知识储备,大家学之前可以先去看看html基础知识。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


最后基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源【免费】。

selenium入门详细指南(附淘宝抢购案例)相关推荐

  1. Git快速入门篇—— Windows版本淘宝镜像快速下载安装详细步骤及简单入门教程(附带图文教程)

    Git快速入门篇-- Windows版本淘宝镜像快速下载安装详细步骤及简单入门教程(附带图文教程) 前言:我们平时在整理代码的时候,尤其是与别人一起开发项目的时候,常常涉及到代码的更新,因此代码版本问 ...

  2. 运用selenium库写淘宝抢购详解【3】(文末附带源码)

    #每日一更[3] 今天讲的是用selenium库写一个淘宝抢购程序,10.19亲测可用 1.淘宝抢购的思路和上一篇的思路类似,通过打开浏览器筛选浏览器内的标签,并点击来实现自动化 #下面来想一下思路 ...

  3. 使用Python编写淘宝抢购代码

    在 Python 中编写淘宝抢购代码,需要使用一些第三方库来帮助我们登录淘宝并获取商品信息.具体步骤如下: 安装所需的第三方库.需要使用的库有:requests.selenium 和 chromedr ...

  4. 淘宝抢购python代码-仅供学习

    淘宝抢购python代码-仅供学习 需要使用的python工具包有 from selenium import webdriver import datetime import time from se ...

  5. python爬虫实例电商_如何用代码爬抓电商数据(附淘宝API调用实例)

    原标题:如何用代码爬抓电商数据(附淘宝API调用实例) 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业智能B ...

  6. 如何用代码爬抓电商数据(附淘宝API调用实例)

    2019独角兽企业重金招聘Python工程师标准>>> 如何用代码爬抓电商数据(附淘宝API调用实例) http://www.21ds.cn/2190.html 转载于:https: ...

  7. taobao.trade.fullinfo.get( 获取单笔交易的详细信息 )、淘宝店铺卖出订单详情接口,店铺订单明文接口,店铺订单解密接口,店铺订单消息推送接口

    taobao.trade.fullinfo.get( 获取单笔交易的详细信息 ),淘宝店铺卖出订单详情接口,对接该接口可用于获取淘宝店铺订单详情信息,包括卖出订单详情,买家姓名,买家电话,买家收货地址 ...

  8. taobao.trade.fullinfo.get( 获取单笔交易的详细信息 )、淘宝店铺卖出订单详情接口,淘宝店铺订单明文接口,淘宝店铺订单解密接口

    taobao.trade.fullinfo.get( 获取单笔交易的详细信息 ),淘宝店铺卖出订单详情接口,对接该接口可用于获取淘宝店铺订单详情信息,包括卖出订单详情,买家姓名,买家电话,买家收货地址 ...

  9. Android App支付:支付宝SDK接入详细指南(附官方支付demo)

    Android App支付:支付宝SDK接入详细指南(附官方支付demo) 前言 一家移动互联网公司,说到底,要盈利总是需要付费用户的,自己开发支付系统对于资源有限的公司来说显然不太明智,国内已经有多 ...

  10. 解决selenium + chromedriver模拟登录被淘宝反爬

    解决selenium + chromedriver模拟登录被淘宝反爬 问题 ​使用 selenium + webdriver 模拟淘宝登录时,出现滑动验证码反爬,尝试程序模拟滑动滑块,以及在程序打开的 ...

最新文章

  1. 数据结构和算法动态可视化
  2. c 语言文字输出函数,c/c++语言中文字输出函数总结
  3. 使用libvirt管理kvm(virsh篇)
  4. DayDayUp:发明专利授予条件、撰写发明专利的注意事项以及申辩模板
  5. Java Servlet 过滤器与 springmvc 拦截器的区别?
  6. 【C/C++学院】0828-数组与指针/内存分配/数据结构数组接口与封装
  7. 用户代码未处理nullreferenceexception_CSAPP 第九章整理 未完成
  8. python如何移动图片_Pygame的图像移动|python基础教程|python入门|python教程
  9. 智能升级新阶段,新云原生企业如何加速出圈?
  10. 转:2016年崛起的js项目
  11. 代码积累与编程能力哪个更重要
  12. origin画图初步入门
  13. 一级建造师-通信-光电缆检验
  14. 计算思维是运用计算机科学的什么进行,什么是计算思维?
  15. MYSQL 列转行方法
  16. 酒类电商1919获阿里巴巴20亿元战略投资,估值达70亿元
  17. 政策热市场冷 中国新能源汽车遇尴尬
  18. 给孩子炖鳄鱼?时代变了,就比谁会玩儿...
  19. 调查显示企业SOA应用率仍然很低
  20. PaddlePaddle深度学习实战——英法文翻译机

热门文章

  1. 笔记本重装win10系统
  2. 本科论文发表的难度大吗
  3. elasticsearch,使用normalizer优化keyword字段的查询
  4. 你有想过如何合适地给 JavaScript 变量命名吗?
  5. matlab面试问题,前25个MATLAB面试问题
  6. 在非关联情况下的欧姆定律的使用
  7. 有管网气体消防系统小知识来啦
  8. 内存XMP是什么意思?有必要开吗?内存XMP模式的作用与开启教程
  9. 2008 SCI 影响因子(Impact Factor)
  10. 知群产品经理必修TOP班-31期学习笔记