【软件测试7】web自动化测试——12306购票实战
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购票实战相关推荐
- 精品向丨软件测试企业级Web自动化测试项目实战(附完整项目)
今天给大家分享一个简单易操作的实战项目(已开源) 项目名称 ET开源商场系统 项目描述 ETshop是一个电子商务B2C电商平台系统,功能强大,安全便捷.适合企业及个人快速构建个性化网上商城. 包含P ...
- pythonweb开发实战pdf百度贴吧_Python Web自动化测试入门与实战,从入门到入行
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 图书目录 第一篇 基础篇 第1章 学习环境的搭建... 1 1.1 环境搭建... 1 1.1.1 Selenium简介... 2 1.1.2 Pytho ...
- 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 ...
- 13z Web自动化测试 - 软件测试
软件测试所有内容笔记正在陆续更新中,笔记已经在本地记录,全部为自己手动记录的笔记及总结,正在开始更新中,后续会逐步更新并完善到 软件测试学习内容总结 专栏. 本节内容:Web自动化测试 文章目录 1 ...
- 软件测试web自动化测试
今天目标 1.自动化相关概念 2.自动化相关环境搭建 3.元素定位 课程大纲 1.核心重点(第二章) 2,提高代码质量,自动化水平(第三.四.五.六章) 3.项目实战(第七章) 4.理论及环境与定位( ...
- 【爬虫实战】12306购票抓包分析以及任务分解
12306购票抓包分析以及任务分解 前言 1. 抓包分析 1.1 `https://www.12306.cn/index/` 1.2 `https://kyfw.12306.cn/otn/login/ ...
- 2019 Selenium3与Python3实战开发Web自动化测试框架(三)
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :2019 Selenium3与Python3实战开发Web自动化测试框架(二)_cdtaogang's ...
- 思特沃克(ThoughtWorks) 外企面试题 面试经验分析 面试题 软件测试工程师 测试面试题分享 测试需求理解和用例设计编写 SeleniumUI自动化测试 接口测试 性能测试 实战之战损版
文章目录 一.前言 二.面试问题 1.面试题问题汇总 展示 2.Automation Testing Homework V2.pdf 2.1 自动化家庭 作业 2.2 自动化家庭作业 Selenium ...
- 项目实战——Web自动化测试
目录 一.前言及测试用例设计 二. 首页测试(未登录) 三.注册测试 四.对局列表测试 五.排行榜测试 六.对战测试 七.Bot测试 八.测试套件Suite 一.前言及测试用例设计 整个项目已经部署完 ...
最新文章
- .NET简谈组件程序设计之(详解NetRemoting结构)
- 计算机管理的未来职业发展方向,职业发展方向
- Silverlight动态创建Gird
- canvas 元素绑定事件_绘制SVG内容到Canvas的HTML5应用
- doublevalue_Java Integer类doubleValue()方法与示例
- 显示当前行号、文件名和函数名(二)
- ie6中容器内浮动元素的border边框不完全显示的bug
- postman自动打开_编写自动执行postman的脚本
- Rust 1.34.1 稳定版发布,Bug 修复
- 友华 PT926G 超管密码 V3.0
- 如何对多个文件夹进行重命名?这个方法可以批量修改文件夹名、给文件夹名加统一前缀或后缀
- 如何将 CHM 文件翻译成中文
- Latex中的caption
- 简单实用的电脑桌面待办清单应用
- 方舟生存进化手游版服务器维护,方舟生存进化手游PVX服务器规则一览 PVX服务器怎么玩_3DM手游...
- javascript的json比对插件
- linus torvalds
- [146]PyUserInput模拟鼠标和键盘模拟
- 使用Android Studio编写一个简单的音乐盒
- 中国式IT运维,趟出自己的“长期主义”河流