Python selenium 实现简单的自动登录、下单脚本

发表于:2023-3-17 09:12

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:路人    来源:知乎

  前言
  Selenium 是最广泛使用的开源 Web UI(用户界面)自动化测试套件之一。Selenium 支持的语言包括C#,Java,Perl,PHP,PythonRuby。目前,Selenium Web 驱动程序最受 Python 和 C#欢迎。
  Selenium 测试脚本可以使用任何支持的编程语言进行编码,并且可以直接在大多数现代 Web 浏览器中运行。在爬虫领域 selenium 同样是一把利器,能够解决大部分的网页的反爬问题,但也不是万能的,它最明显的缺点就是速度慢。
  开发环境
  · python 3.8
  ·pycharm专业版
  · selenium==3.141.0(谷歌驱动的安装和配置)
  代码实现思路
  1. 打开浏览器
  2. 输入网址
  3. 登陆
  4. 选择商品属性, 点击立即购买
  5. 下单
  配置浏览器驱动
  这里以安装 Chrome 驱动作为演示。但 Chrome 在用 selenium 进行自动化测试时还是有部分 bug,常规使用没什么问题,但如果出现一些很少见的报错,可以使用 Firefox 进行尝试,毕竟是selenium 官方推荐使用的。
  确定浏览器版本
  下载驱动
  下载版本相对接近的就行,不用完全一致。
  将 chromedriver.exe 保存到任意位置,并把当前路径保存到环境变量中(我的电脑>>右键属性>>高级系统设置>>高级>>环境变量>>系统变量>>Path),添加的时候要注意不要把 path 变量给覆盖了,如果覆盖了千万别关机,然后百度
  测试是否成功
  from selenium import webdriver
  # Chrome浏览器
  driver = webdriver.Chrome()
  代码实现
  模块导入
  from selenium import webdriver
  import time
  1. 打开浏览器
  driver = webdriver.Chrome()
  2. 输入网址
  url = 'https://detail.tmall.com/item.htm?abbucket=9&id=667918031025&rn=30933d864f689e92fec433592f0dc822'
  driver.get(url)
  driver.implicitly_wait(10)
  3. 登陆(不是经常登录的电脑,需扫码登录)
  try:
      iframe = driver.find_element_by_css_selector('iframe')
  except:
      iframe = driver.find_element_by_css_selector('#baxia-dialog-content')
  # 切换到嵌套页面
  driver.switch_to.frame(iframe)
  # 标签别名
  # 匹配到二维码并且点击
  driver.find_element_by_css_selector('.iconfont.icon-qrcode').click()
  # 留几秒钟 需要登陆
  while True:
      print("###请扫码登陆###")
      if driver.title != "商品详情":
          break
      time.sleep(1)
  print("###登陆成功!!!###")
  4. 选择商品属性, 点击立即购买
  try:
      # 选择商品属性
      driver.find_element_by_css_selector('.skuValueName').click()
      # 点击立即购买
      driver.find_element_by_css_selector('div>button>span').click()
  except:
      # 选择商品属性
      driver.find_element_by_css_selector('.tm-clear.J_TSaleProp li').click()
      # 点击立即购买
      driver.find_element_by_css_selector('#J_LinkBuy').click()
  time.sleep(1)
  driver.find_element_by_css_selector('.go-btn').click()
  input()
  5. 下单
  最简单的一个步骤:拿出手机,打开支付宝,扫码付钱就行。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号