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()

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

  1. 精品向丨软件测试企业级Web自动化测试项目实战(附完整项目)

    今天给大家分享一个简单易操作的实战项目(已开源) 项目名称 ET开源商场系统 项目描述 ETshop是一个电子商务B2C电商平台系统,功能强大,安全便捷.适合企业及个人快速构建个性化网上商城. 包含P ...

  2. pythonweb开发实战pdf百度贴吧_Python Web自动化测试入门与实战,从入门到入行

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 图书目录 第一篇 基础篇 第1章 学习环境的搭建... 1 1.1 环境搭建... 1 1.1.1 Selenium简介... 2 1.1.2 Pytho ...

  3. python web自动化测试入门与实战杨定佳pdf_Python Web自动化测试入门与实战

    篇 基础篇 章 学习环境的搭建 1.1 环境搭建 1.1.1 Selenium简介 1.1.2 Python简介 1.1.3 Python的安装 1.1.4 环境变量的设置 1.1.5 Seleniu ...

  4. 13z Web自动化测试 - 软件测试

    软件测试所有内容笔记正在陆续更新中,笔记已经在本地记录,全部为自己手动记录的笔记及总结,正在开始更新中,后续会逐步更新并完善到 软件测试学习内容总结 专栏. 本节内容:Web自动化测试 文章目录 1 ...

  5. 软件测试web自动化测试

    今天目标 1.自动化相关概念 2.自动化相关环境搭建 3.元素定位 课程大纲 1.核心重点(第二章) 2,提高代码质量,自动化水平(第三.四.五.六章) 3.项目实战(第七章) 4.理论及环境与定位( ...

  6. 【爬虫实战】12306购票抓包分析以及任务分解

    12306购票抓包分析以及任务分解 前言 1. 抓包分析 1.1 `https://www.12306.cn/index/` 1.2 `https://kyfw.12306.cn/otn/login/ ...

  7. 2019 Selenium3与Python3实战开发Web自动化测试框架(三)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :2019 Selenium3与Python3实战开发Web自动化测试框架(二)_cdtaogang's ...

  8. 思特沃克(ThoughtWorks) 外企面试题 面试经验分析 面试题 软件测试工程师 测试面试题分享 测试需求理解和用例设计编写 SeleniumUI自动化测试 接口测试 性能测试 实战之战损版

    文章目录 一.前言 二.面试问题 1.面试题问题汇总 展示 2.Automation Testing Homework V2.pdf 2.1 自动化家庭 作业 2.2 自动化家庭作业 Selenium ...

  9. 项目实战——Web自动化测试

    目录 一.前言及测试用例设计 二. 首页测试(未登录) 三.注册测试 四.对局列表测试 五.排行榜测试 六.对战测试 七.Bot测试 八.测试套件Suite 一.前言及测试用例设计 整个项目已经部署完 ...

最新文章

  1. .NET简谈组件程序设计之(详解NetRemoting结构)
  2. 计算机管理的未来职业发展方向,职业发展方向
  3. Silverlight动态创建Gird
  4. canvas 元素绑定事件_绘制SVG内容到Canvas的HTML5应用
  5. doublevalue_Java Integer类doubleValue()方法与示例
  6. 显示当前行号、文件名和函数名(二)
  7. ie6中容器内浮动元素的border边框不完全显示的bug
  8. postman自动打开_编写自动执行postman的脚本
  9. Rust 1.34.1 稳定版发布,Bug 修复
  10. 友华 PT926G 超管密码 V3.0
  11. 如何对多个文件夹进行重命名?这个方法可以批量修改文件夹名、给文件夹名加统一前缀或后缀
  12. 如何将 CHM 文件翻译成中文
  13. Latex中的caption
  14. 简单实用的电脑桌面待办清单应用
  15. 方舟生存进化手游版服务器维护,方舟生存进化手游PVX服务器规则一览 PVX服务器怎么玩_3DM手游...
  16. javascript的json比对插件
  17. linus torvalds
  18. [146]PyUserInput模拟鼠标和键盘模拟
  19. 使用Android Studio编写一个简单的音乐盒
  20. 中国式IT运维,趟出自己的“长期主义”河流

热门文章

  1. PX4从放弃到精通(三):使用qt编译PX4
  2. Kaggle猫狗大战模型搭建总结
  3. 计数计量单位KMGTPEZY【计算机】【天文】
  4. SEO基础入门教程:初学者应该掌握的SEO专业术语
  5. Linux 01 Liunx系统介绍
  6. python笔记(八)
  7. ICME2021:实时VVC软件解码器
  8. 2021年安全生产监管人员考试及安全生产监管人员考试内容
  9. crossover卸载 linux,新技能!在Ubuntu 中卸载CrossOver
  10. 科技云报道:ChatGPT的胜利,宣告知识图谱的消亡?