100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 〖Python WEB 自动化测试实战篇⑩〗- 实战 - UI自动化脚本设计常见场景剖析

〖Python WEB 自动化测试实战篇⑩〗- 实战 - UI自动化脚本设计常见场景剖析

时间:2020-01-23 18:31:13

相关推荐

〖Python WEB 自动化测试实战篇⑩〗- 实战 - UI自动化脚本设计常见场景剖析

前言

✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS 赋能的博主 ✌

🏆 CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主 🏆

📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀

💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬

🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦

文章目录

🐳 UI自动化脚本设计场景剖析🐳 利用脚本实现从登录到购买门票的场景基线流程

前面章节利用本地html文件的虚拟场景辅助我们了解了元素的定位、元素的操作,熟悉了正常脚本的流转运行过程。从这一章节开始,将对之前接口自动化测试篇章所使用的旅游网这样的一个项目,进行真实的UI自动化脚本的设计。

很多时候在实际工作中发生的困难往往是在真实的操作过程中真实遇到的,接下来我们就一边编写脚本一边解决在常见的UI自动化脚本设计中遇到的问题,同时也辅助我们去完成一些更后续的偏框架类型的搭建,让我们的代码、脚本变得更好看一些。

🐳 UI自动化脚本设计场景剖析

见下图:

虽然整个页面是偏向于手机端的,但是通过 WEB 也可以访问到,从 WEB 端的呈现可以看到它与其他的某些旅游网站功能大体相似。有首页、顶部广告位(banner)、精选景点,还支持搜索。可以登录,可以下订单购买门票,甚至后续的好评等等等等…

接下来我们就将登录、产品的购买、预定、提交订单、支付,这通常是一个正常旅游网站的通用的流程。也是当前旅游网站的一个核心基线流程,不如就将这样一个核心基线流程编程自动化脚本实现的方式。

脚本的实现方式具体分为以下几个部分:进入首页、跳转至登录页、登录页执行登录操作、执行登录后跳转至首页选择要购买的产品执行某一个门票或者其他类型的预定、预定后完成支付的动作、回到订单页。

🐳 利用脚本实现从登录到购买门票的场景基线流程

代码示例如下:

# coding:utf-8from time import sleepfrom selenium import webdriverdriver = webdriver.Chrome()driver.maximize_window()# 访问旅游网首页driver.get("http://django./#/")# 跳转至登录页element_mine = driver.find_element_by_xpath("//*[@id='app']/div[1]/div[5]/div[3]") # Xpath 定位 "我的" 元素sleep(1)element_mine.click() # 针对 "我的" 元素执行 click 操作sleep(1)# 执行登录操作,分别输入账号和密码执行登录,然后点击 "首页" 跳转至 "首页"driver.find_element_by_xpath("//*[@id='app']/div[1]/form/div[1]/div[2]/div/input").send_keys("13500000001")driver.find_element_by_xpath("//*[@id='app']/div[1]/form/div[2]/div[2]/div/input").send_keys("Success@")driver.find_element_by_xpath("//*[@id='app']/div[1]/form/div[3]/button").click() # 点击登录按钮跳转的是个人中心sleep(1)driver.find_element_by_xpath("//*[@id='app']/div[1]/div[5]/div[1]").click() # 点击 "首页",跳转至首页。sleep(2)# "首页" 购买产品执行下单操作driver.find_element_by_xpath("//*[@id='app']/div[1]/div[4]/div[2]/a[1]").click()sleep(1)driver.find_element_by_xpath("//*[@id='app']/div[1]/div[5]/div[2]/div[2]/a").click() # 针对 "预定" 按钮执行点击操作driver.find_element_by_xpath("//*[@id='app']/div[1]/form/div[1]/div[1]/div[2]/div/input").send_keys("-06-15") # 选择日期driver.find_element_by_xpath("//*[@id='app']/div[1]/form/div[4]/div/button").click() # 点击 "提交订单" 按钮sleep(1)driver.find_element_by_xpath("//*[@id='app']/div[1]/form/div/div/button").click() # 点击 "立即支付" 按钮# 需要注意的是,这里的 "确认" 按钮,不是弹出框的处理方式driver.find_element_by_xpath("/html/body/div[5]/div[3]/button[2]").click() # 点击 "支付确认" - "确认" 按钮sleep(2)driver.quit()

运行结果如下:

结合上文中的脚本,我们会发现三点问题:

第一点:在页面元素不太标准化,没有标准的属性功能使用的情况下,只有 Xpath 与 css selector 能够保证一定定位到元素。最提倡使用的还是 Xpath 的方式。第二点:在页面与页面之间会存在一定的时间差,如果没有定位响应全局的等待时间、响应时间的情况下。可以使用简短、快速的 “sleep()” 的方式能够减少由于页面跳转所带来的的元素还没有加载出来的影响。第三点:一但页面上出现了元素不容易点击、不可以点击的情况,可以通过 JavaScript 的方式来处理,示例如下:driver.execute_script('$(arguments[0]).click()', element)

到了这里,一个比较完整的流程的自动化测试脚本算是编写好了,下一章节,将把该脚本放到unittest框架里去做一些操作,来丰富完善我们的测试方式。

吐槽一下,这种自上而下执行脚本的方式,真的太丑了!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。