当前位置: 首页 > news >正文

【功能自动化】WebTours实现订票流程并设置检查点

环境搭建:

1.需要配置WebTours网站

代码实现:

# 导入包
from selenium  import webdriver
from selenium.webdriver.support.select import Select
from time import sleep# 打开浏览器
driver = webdriver.Chrome()
driver.get("http://127.0.0.1:1080/WebTours/")
# 等待3秒
sleep(3)driver.switch_to_default_content()
driver.switch_to_frame("body")
driver.switch_to_frame("info")
actual = driver.find_element_by_tag_name("body").text
expect = 'Welcome to the Web Tours site.'
# 精确匹配用in 否则用in 
if expect in actual:print("打开网站:成功")
else:print("打开网站:失败")# 切换框架
driver.switch_to_default_content()
driver.switch_to_frame("body")
driver.switch_to_frame("navbar")# 登录
yhm = 'admin'
mm = '123456'
# 输入用户名
driver.find_element_by_name("username").send_keys(yhm)
# 输入密码
driver.find_element_by_name("password").send_keys(mm)
# 点击登录
driver.find_element_by_name("login").click()
sleep(3)# 切换框架
driver.switch_to_default_content()
driver.switch_to_frame("body")
driver.switch_to_frame("info")expect = "Welcome, "+yhm
actual = driver.find_element_by_tag_name("body").text
# 精确匹配用in 否则用in 
if expect in actual:print("登录:成功")
else:print("登录:失败")# 搜票
driver.switch_to_default_content()
driver.switch_to_frame("body")
driver.switch_to_frame("navbar")
driver.find_element_by_xpath('//img[@alt="Search Flights Button"]').click()
sleep(3)# 预定票
driver.switch_to_default_content()
driver.switch_to_frame("body")
driver.switch_to_frame("info")
Select(driver.find_element_by_name("depart")).select_by_visible_text="London"
# select_by_value 值是看不见的
Select(driver.find_element_by_name("arrive")).select_by_visible_text="Paris"
driver.find_element_by_name("findFlights").click()
sleep(1)# 查看预定的航班信息
driver.find_elements_by_name("outboundFlight")[0].click()
driver.find_element_by_name("reserveFlights").click()
sleep(1)# 支付信息
driver.find_element_by_name("buyFlights").click()
sleep(1)# 切换框架expect = "Flight 240 leaves London for Paris"
actual = driver.find_element_by_tag_name("body").text
# 精确匹配用in 否则用in 
if expect in actual:print("订票:成功")
else:print("订票:失败")#预定下一个
driver.find_element_by_name("Book Another").click()
sleep(1)# 切换框架
driver.switch_to_default_content()
driver.switch_to_frame("body")
driver.switch_to_frame("navbar")driver.find_element_by_xpath('//img[@alt="SignOff Button"]').click()
sleep(1)# 切换框架
driver.switch_to_default_content()
driver.switch_to_frame("body")
driver.switch_to_frame("info")expect = "sign up now"
actual = driver.find_element_by_tag_name("body").text
# 精确匹配用in 否则用in 
if expect in actual:print("注销:成功")
else:print("注销:失败")# info 
driver.quit()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 小程序学习day11-生命周期函数、组件所在页面的生命周期、自定义组件的插槽、自定义组件的父子通信
  • VS2022 - 制作自己的C#类库dll,并输出Unity识别的pdb调试信息文件
  • 7. 数据结构—二叉树(链式存储)
  • 改编版猜数字小游戏,猜错了就黑屏(整蛊版本)
  • PhotoZoom Pro 9:AI加持让图像放大革命性飞跃 PhotoZoom下载
  • mkv怎么转换mp4格式?格式转换秘籍大揭底!
  • 《黑神话:悟空》发售后快手游戏笔记本电脑GMV日环比增长40%
  • haproxy编译安装
  • 闲置物品交易平台网站商城-计算机毕设Java|springboot实战项目
  • 泛微eteams OA对接金蝶云星空写入数据
  • 火语言RPA流程组件介绍--打开文件/运行进程命令
  • 通过Qt Creator Plugin开发Qt Creator插件-【金丹篇】
  • 视频项目开发,EasyCVR视频融合平台为何成为关键驱动力
  • jenkins最佳实践(一):jenkins安装与部署
  • SAP 界面小技巧-快速查找单据及路径
  • @jsonView过滤属性
  • avalon2.2的VM生成过程
  • C++11: atomic 头文件
  • ES6系统学习----从Apollo Client看解构赋值
  • express如何解决request entity too large问题
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • js ES6 求数组的交集,并集,还有差集
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • uni-app项目数字滚动
  • vue-router的history模式发布配置
  • 翻译--Thinking in React
  • 前端工程化(Gulp、Webpack)-webpack
  • 使用 @font-face
  • 我看到的前端
  • 限制Java线程池运行线程以及等待线程数量的策略
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # 职场生活之道:善于团结
  • #pragma once
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (14)Hive调优——合并小文件
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (function(){})()的分步解析
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (离散数学)逻辑连接词
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • ***原理与防范
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别
  • .NET 中的轻量级线程安全
  • .net8.0与halcon编程环境构建
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .NET应用UI框架DevExpress XAF v24.1 - 可用性进一步增强
  • [ C++ ] STL---stack与queue
  • [ IOS ] iOS-控制器View的创建和生命周期