ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

web自动化总结

2021-02-18 16:58:28  阅读:167  来源: 互联网

标签:总结 web 封装 xpath 定位 元素 自动化 PO 页面


web自动化项目流程

  • 测试计划时分析哪些功能需要进行自动化测试,哪些进行手工测试
  • 什么时候开始介入web自动化测试?在项目稳定的时候

web自动化代码流程

  • 手工测试,分析测试步骤及准备元素定位方式,写到PO中
  • 测试类中,用注释写清楚测试步骤
  • 测试类中,准备前置条件、后置条件
  • PO类中,封装页面行为
  • 测试类中,调用具体的PO类

重点内容

元素定位

常用定位:id、name、classname

xpath

  • xpath表达式
    • 一定要使用相对路径//(为什么不能使用绝对路径?无法应对页面的改动)
    • 逻辑符,and、or
    • 索引从1开始,[1](极易出现错误)
    • 关系运算,通过父亲找儿子,通过儿子找父亲
    • 轴运算,找哥哥姐姐、找弟弟妹妹、找祖先
  • xpath和css的比较
    • css表达方式比xpath更简洁些;主流浏览器(chrome、firefox)使用css选择器查询速度较快(毫秒级差距)
    • xpath功能更强大,有更丰富的函数及轴定位,可定位一些复杂关系的元素;xpath支持用text文本,css选择器不支持;对于一些复杂的元素,xpath的写法反而更简洁些

selenium运行原理

  • 结合图说明:
    在这里插入图片描述
  • 客户端与webdriver如何沟通?
    通过json wire protocol协议(其本质就是http协议)
  • selenium为什么能够跨语言?
    • webdriver的接口服务。无论用什么语言,均可调用webdriver的接口
  • webdriver与浏览器如何沟通?
    通过Js。因为浏览器内置Js解释器,也只能听懂Js。

三大切换

  • 窗口切换
  • iframe切换
  • alert切换

页面操作

元素操作

  • 单一操作
    • 鼠标操作:click()
    • 键盘操作:send_keys(),输入某个按键可调用Keys类的具体按键。
  • 链式操作
    ActionChains(driver).click(el).move_to_element(el).perform()
    • 为什么要加perform()?让动作生效(极易出错)
    • 为什么能进行链式调用?每个函数均return self。在PO模式中,我们也运用了链式调用的原理进行PO的链式调用。

下拉框操作

select = Select(下拉框的element)
通过select调用一下方法进行选择、反选:
在这里插入图片描述

文件上传

方法

  • send_keys(“文件路径”)
  • 系统交互,需使用第三方模块:pywinauto, pyautogui

JS操作

execute_script, arguments[0]

PO模式

  • 什么是PO模式?
    把页面封装成对象,对象的属性包括页面的url、网页标题、元素定位器,对象的方法包括元素定位方法、元素操作方法。
  • PO模式有什么用?
    • 可维护性
    • 可读性
    • 可扩展性
    • 可复用性
  • PO的封装原则
    • 是不是所有的动作都需要单独封装成页面对象的方法?
      • 根据需要。遵循的原则:你用到了什么行为, 你就封装什么行为。
    • 封装的页面操作的返回值
      • self, 或者是其他的页面的对象
      • 如果你需要获取某个元素或者属性,就直接返回元素本身或者属性。
      • 如果一个操作它可能会有多个结果,比如进行页面跳转或者本页面。
      • 根据结果封装成多个方法。

如何提高web自动化测试的稳定性?

  • 加上等待。
    • 隐性等待。只能等待元素,且只能等待元素被找到
    • 显性等待。可进行多种情景的等待,等待的条件也很丰富
    • 强制等待。用在多个系统进行交互的地方
  • 元素定位。找前端工程师不会轻易修改或修改影响不大的定位方式;在用xpath或css定位时使用相对路径。
  • 异常处理。如果要定位的元素不在当前页面,可抛出异常,方便定位。写在basepage的构造方法中:
    在这里插入图片描述
  • 使用pytest的重运行机制。

标签:总结,web,封装,xpath,定位,元素,自动化,PO,页面
来源: https://blog.csdn.net/weixin_44885027/article/details/113848386

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有