【软件测试7】web自动化测试——12306购票实战

2023-11-09

web自动化测试——12306购票实战

一、自动化购票流程

  • 登录
  • 进入购票
  • 填写信息
  • 选择车次
  • 预定
  • 选择购票人

二、自动化环境配置

  • 软件环境:Python+selenium

  • Python安装:Python+Pycharm安装

  • **selenium安装:**pip install selenium

    下载地址https://registry.npmmirror.com/binary.html?path=selenium/&spm=a2c6h.24755359.0.0.6d446e51uGlZuC

  • **webdriver配置:**不同浏览器有不同的配置

    Chrome浏览器:Chromedriver下载要和浏览器版本一致

    下载地址:https://registry.npmmirror.com/binary.html?path=selenium/&spm=a2c6h.24755359.0.0.6d446e51Tr7MgI

    解压后拷贝到Python安装根路径之下

  • **检查环境:**写一个简单的demo打开浏览器来检测是否配置好环境

三、web自动化基本原理:

把手动需要的操作全部用Python实现。

web自动化两个步骤:

  • 找元素 :copy xpath

    driver.find_element(‘xpath’,‘//*[@id=“J-userName”]’)

  • 操作 :click,send_keys,clear(点击,输入,清空)

    例如:输入用户名,运行后会自动输入123456

    driver.find_element(‘xpath’,‘//*[@id=“J-userName”]’).send_keys(‘123456’)

    输入密码:

    driver.find_element(‘xpath’,‘//*[@id=“J-password”]’).send_keys(‘nicai’)

    点击登录:

    driver.find_element(‘xpath’,‘//*[@id=“J-login”]’).click()

四、验证码破解

按住滑块,拖动到最右边

关键技术1:

from selenium.webdriver import ActionChains

act=ActionChains(driver)*#*鼠标操作

ActionChains库:在刚打开的浏览器上面执行鼠标操作

关键技术2:

自动化的时候,怎么绕过防刷验证

进行配置,在打开页面之前,去掉页面上的自动化标识

目的:消除自动化与手动操作的差别

*#去掉自动化标识
*option=Options()
option.add_experimental_option(
‘excludeSwitches’,[‘enale-automation’])
option.add_argument(
‘–disable-blink-features=AutomationControlled’**)

五、报错

no such element,没有找到滑块这个元素,

报错原因: 弹出滑块需要时间,马上找找不到

解决方案 :在打开页面之后添加隐式等待,大大增强自动化稳定性

隐式等待特点:

  • 所有找元素都会触发,
  • 每隔一秒种找一下元素
  • 直到配置时间到了还没找到就报错
  • 如果中途找到了就继续往下执行

element is not attached to the page document:

元素找到了,但是没有加载出来

解决方案:添加固定等待 time.sleep(2)

element not interactable :

元素找到了但是不能操作

**原因1:**被遮住了

解决方案: 关闭遮盖的页面

**原因2:**没有显示出来

解决方案: 让它显示

六、代码:

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.options import Options

#去掉自动化标识
option=Options()
option.add_experimental_option('excludeSwitches',['enale-automation'])
option.add_argument('--disable-blink-features=AutomationControlled')
#打开Chrome
driver=webdriver.Chrome(options=option)
#添加隐式等待
driver.implicitly_wait(10)
# 访问登录页
driver.get('https://kyfw.12306.cn/otn/view/index.html')
#输入用户名
driver.find_element('xpath','//*[@id="J-userName"]').send_keys('18295570687')
#输入密码
driver.find_element('xpath','//*[@id="J-password"]').send_keys('xuhui1624')
#点击登录
driver.find_element('xpath','//*[@id="J-login"]').click()
#验证码破解:拖住滑块,滑到最右边
#找到滑块
ele=driver.find_element('xpath','//*[@id="nc_1__scale_text"]/span')
#按住滑块
act=ActionChains(driver)#鼠标操作
act.click_and_hold(ele)
#拖动到最右边,横向拖动520,大于滑块的长度
act.move_by_offset(520,0)
#使鼠标操作生效
act.perform()
#鼠标移动到车票上
tiket=driver.find_element('xpath','//*[@id="J-chepiao"]/a')
act.move_to_element(tiket)
act.perform()
#点击单程票
driver.find_element('xpath','//*[@id="megamenu-3"]/div[1]/ul/li[1]/a').click()
#输入出发地
driver.find_element('xpath','//*[@id="fromStationText"]').click()
driver.find_element('xpath','//*[@id="fromStationText"]').send_keys('杭州')
driver.find_element('xpath','//*[@id="citem_1"]').click()
#输入目的地
driver.find_element('xpath','//*[@id="toStationText"]').click()
driver.find_element('xpath','//*[@id="toStationText"]').send_keys('成都')
driver.find_element('xpath','//*[@id="citem_0"]/span[1]').click()
#输入出发日期
driver.find_element('xpath','//*[@id="train_date"]')
driver.find_element('xpath','//*[@id="train_date"]').clear()
driver.find_element('xpath','//*[@id="train_date"]').send_keys('2023-4-28')
#点击查询
driver.find_element('xpath','//*[@id="query_ticket"]').click()
#找到指定车次的预定按钮
driver.find_element('xpath','//*[@id="ticket_5l000G218911_04_23"]/td[13]/a').click()


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【软件测试7】web自动化测试——12306购票实战 的相关文章

随机推荐

  • 关于自制CMSIS_DAP离线下载器下载算法的代码说明:“0xE00ABE00, 0x062D780D, 0x24084068, 0xD3000040, 0x1E644058, 0x1C49D1FA“

    关于自制CMSIS DAP离线下载器下载算法的代码说明 0xE00ABE00 0x062D780D 0x24084068 0xD3000040 0x1E644058 0x1C49D1FA 在自制CMSIS DAP离线下载器的时候 利用FLM
  • Mysql篇-第2章,什么是脏读、幻读、不可重复读?如何处理?

    一 Mysql进行事务并发控制时经常遇到的问题 脏读 在事务进行中 读到了其他事务未提交的数据 举个例子 有一个table表 如果执行顺序如下 这种情况下左边查询的结果会是101 正是因为读取到了另一个事务未提交的数据 幻读 在一个事务中
  • selenium 获取cookie 并使用

    selenium 获取cookie 参数设置 以获取阿里云cookie范例 from selenium import webdriver import json url https account aliyun com login logi
  • 使用Python的方式理解Golang的结构体struct

    Go源码 package GoTools import fmt 定义结构体存储密码 type Config struct password string func InitConfig password string Config c ne
  • Vue用户进行页面切换(路由跳转)时,动态改变路由的动画(transition效果)

    当我们在使用Vue Router时 为了用户有更好的视觉效果及体验 我们通常需要实现基于路由的动态过渡效果 github https github com Rise Devin FullStack Product Transport Use
  • retinaface代码讲解_「干货」RetinaFace最强开源人脸识别算法

    看来最早商业化的人脸检测为目标检测算法 依然是各大CV方向AI公司的必争之地 那我们今天主角就是RetinaFace RetinaFace 是今年5月份出现的人脸检测算法 当时取得了state of the art 作者也开源了代码 过去了
  • 集合的知识

    集合 collection集合的常用方法 collection的特点 Collection代表单列集合 每个元素 数据 只包含一个值 Map代表双列集合 每个元素包含两个值 键值对 Collection集合特点 由于collection是一
  • gRpc指南

    本文翻译自官网 原文 https grpc io docs languages java quickstart 快速开始 下面通过一个简单的样例 让你快速上手基于java的gRpc的使用 前置条件 JDK7以上版本 获取示例代码 示例代码是
  • 斯坦福密码学课程-笔记-01-Introduction绪论

    斯坦福密码学课程笔记 01 绪论 Introduction Course Overview Cryptography is everywhere Secure communication Secure Sockets Layer TLS P
  • 使用thop库对yolo等深度学习模型的FLOPS进行计算

    据说yolov5原来的FLOPS计算脚本有bug 因此这个大神推荐使用thop库进行计算 代码如下 input torch randn 1 3 416 416 flops params thop profile model inputs i
  • 【华为OD机试真题 C++】寻找链表的中间结点

    前言 本专栏将持续更新华为OD机试题目 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于OD机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun09
  • SuperMemo 【POJ - 3580】【Splay+懒标记递推想法】

    题目链接 可以说这道题很好的给我们讲述了在Splay树上的lazy标记的递推 跟线段树上类似 在这棵二叉搜索树上 我们一样的去递推懒标记 接下来说说在哪几处需要专门注意懒标记的使用 这里有几处需要注意的地方 就是一开始给你的元素不是已经排好
  • 四种常见的代码覆盖率测试

    您听说过 代码覆盖率 吗 在这篇文章中 我们将探讨什么是测试中的代码覆盖率 以及四种衡量它的常用方法 什么是代码覆盖率 代码覆盖率是衡量测试代码测试了源代码百分比多少的指标 它可以帮助您识别可能缺乏适当测试的代码区域 通常 覆盖率指标会这样
  • 大头小头 字节序

    http blog csdn net zjf82031913 article details 7245183 字节序的问题涉及硬件架构 目前主要是Motorola的PowerPC系列CPU和Intel的x86系列CPU PowerPC系列采
  • Kibana导入CVS数据

    导入CVS数据 下载数据源CVS文件2018 7 12月份地震数据 https www elastic co assets bltb0648a200c490f5e quakes data csv 导入Machine Learning gt
  • 压缩zip文件和解压zip文件(设置压缩密码)

    欢迎访问个人博客 德鲁大叔撸代码 说明 注意引入的依赖 否则一直报错 很不容易找到的错误 import net lingala zip4j core ZipFile import net lingala zip4j exception Zi
  • 搭建并部署Vue3+TypeScript+Vite+ElementPlus项目

    目录 前言 一 搭建Vue3项目 1 安装yarn命令 2 创建VUE项目 3 安装VUE依赖 4 启动VUE项目 5 访问VUE项目 6 打包VUE项目 带项目名 7 部署VUE项目 二 使用Visual Studio Code管理vue
  • CVPR2023 语义分割论文合集

    国际计算机视觉与模式识别会议 CVPR 是计算机科学领域中的顶级会议之一 也是图像处理 机器学习 人工智能等多个领域的交叉学科会议 每年的CVPR会议都会有大量的论文投稿和学术交流活动 其中涵盖了包括图像处理 计算机视觉 模式识别 机器学习
  • STM32 USBH CDC开发及应用

    USB 是英文 Universal Serial BUS 通用串行总线 的缩写 其是一个外部总线标准 用于规范USB主机与外部设备的连接和通讯 由于项目需要 需要开发基于STM32 USB主机 HOST 的CDC的开发 用于编队表演系统中底
  • 【软件测试7】web自动化测试——12306购票实战

    web自动化测试 12306购票实战 一 自动化购票流程 登录 进入购票 填写信息 选择车次 预定 选择购票人 二 自动化环境配置 软件环境 Python selenium Python安装 Python Pycharm安装 seleniu