精华内容
下载资源
问答
  • Web自动化测试实战
    千次阅读 多人点赞
    2022-06-13 20:08:35
    万叶集
    🎉 隐约雷鸣,阴霾天空。 🎉
    🎉 但盼风雨来,能留你在此。 🎉


    前言
    ✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS 赋能的博主 ✌
    🏆 CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主 🏆
    📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
    💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬
    🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦


    专栏系列(点击解锁)学习路线指引知识定位
    🔥Python全栈白皮书🔥 零基础入门篇 以浅显易懂的方式轻松入门,让你彻底爱上Python的魅力。
    语法进阶篇 主要围绕多线程编程、正则表达式学习、含贴近实战的项目练习 。
    自动化办公篇 实现日常办公软件的自动化操作,节省时间、提高办公效率。
    自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。
    数据库开发实战篇 更新中
    爬虫入门与实战 更新中
    数据分析篇 更新中
    前端入门+flask 全栈篇 更新中
    django+vue全栈篇 更新中
    拓展-人工智能入门 更新中
    网络安全之路 踩坑篇 记录学习及演练过程中遇到的坑,便于后来居上者
    网安知识扫盲篇 三天打鱼,不深入了解原理,只会让你成为脚本小子。
    vulhub靶场漏洞复现 让漏洞复现变得简单,让安全研究者更加专注于漏洞原理本身。
    shell编程篇 不涉及linux基础,最终案例会偏向于安全加固方向。 [待完结]
    WEB漏洞攻防篇 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
    渗透工具使用集锦 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
    点点点工程师 测试神器 - Charles 软件测试数据包抓包分析神器
    测试神器 - Fiddler 一文学会 fiddle ,学不会倒立吃翔,稀得!
    测试神器 - Jmeter 不仅是性能测试神器,更可用于搭建轻量级接口自动化测试框架。
    RobotFrameWork Python实现的自动化测试利器,该篇章仅介绍UI自动化部分。
    Java实现UI自动化 文档写于2016年,Java实现的UI自动化,仍有借鉴意义。
    MonkeyRunner 该工具目前的应用场景已不多,文档已删,为了排版好看才留着。


    在自动化测试过程中,不可缺少的一部分就是 “测试报告” 。在前面的接口自动化测试的章节,其实已经讲了一些,最终是使用 “HTMLTESTRUNNER” 生成的测试报告。今天依然用其生成一个 “WEB自动化登录Case” 的测试报告。

    🐳 利用 HTMLTestReportCn.py 生成可视化测试报告

    HTMLTestReportCn.py 是一个第三方模块,它会以 HTML 格式的方式存放测试结果,并以报告的形式保存。

    HTMLTestReportCn.py 无法通过 pip 进行安装,下载地址:https://tungwaiyip.info/HTMLTestReportCn.html 。该模块是基于 Python2 开发的,所以在 Python 3 上不兼容,所以需要对该模块进行修改。我已经将修改好的使用与 Python 3 的 HTMLTestReportCn.py 上传至CSDN资源一栏,点击下载即可,免费的。

    编写脚本之前需要注意事项:

    • 1、将之前项目中的 HTMLTestReportCn.py 文件直接复制到当前项目中即可
    • 2、编写生成测试报告的脚本在创建是,选择 python unit file ,且名称以 test_ 开头,这也是一个良好的编码规范


    生成报告脚本代码示例如下:

    import unittest
    from travel_login_ddt import TestTravel
    from HTMLTestReportCN import HTMLTestRunner
    
    
    suite = unittest.TestSuite()
    suite = unittest.TestLoader().loadTestsFromTestCase(TestTravel)
    
    
    file = open("result.html", "wb")
    HTMLTestRunner(stream=file, title="UI自动化测试报告", description="User:Husky\nCase:test_login").run(suite)
    
    
    if __name__ == '__main__':
        unittest.main()
    

    运行结果如下:



    测试报告输出结果如下:



    上图就是我们的自动化测试报告,当然了,除了 HTMLTestRunner 样式的测试报告还有其他样式的报告。比如 unittest 原始样式的报告,在持续集成的场景下还需要为 Jenkins 提供一种 xml 格式的测试报告,再比如 allure 测试报告。(其实在编写生成测试报告的脚本的时候,其实差距都不是很大)

    以上就是今天的针对测试报告的简单的实战,说是实战,其实就是针对 接口自动化测试的测试报告的知识点的再次巩固。

    到了这里,其实关于代码框架已经差不多了。下一章节将会顺着刚刚提到的 持续集成场景 来深入的聊一聊。



    更多相关内容
  • 闲,所以有幸接触到 QTP、Selenium 等自动化测试工具,由于当时水平有限,学习也只停留在录制与回放的水 平上。再次学习 Selenium 是时隔一年之后,笔者有幸跳槽到一家互联网公司继续做 web 软件测试,发现项目适 合...
  • Web自动化测试实战

    2013-03-16 23:27:21
    Web自动化测试实战 新人学习用的 视频 长度55分钟
  • 今天要和大家来聊聊关于自动化测试的持续集成,通过前文的学习,我们的自动化测试框架、测试的思想已经融入到了整体的代码编写过程中了。接下里的下一步就是如何让自动化测试能够像开发一样、敏捷思想一样,能够持续...
    万叶集
    🎉 隐约雷鸣,阴霾天空。 🎉
    🎉 但盼风雨来,能留你在此。 🎉


    前言
    ✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS 赋能的博主 ✌
    🏆 CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主 🏆
    📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
    💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬
    🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦


    专栏系列(点击解锁)学习路线指引知识定位
    🔥Python全栈白皮书🔥 零基础入门篇 以浅显易懂的方式轻松入门,让你彻底爱上Python的魅力。
    语法进阶篇 主要围绕多线程编程、正则表达式学习、含贴近实战的项目练习 。
    自动化办公篇 实现日常办公软件的自动化操作,节省时间、提高办公效率。
    自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。
    数据库开发实战篇 更新中
    爬虫入门与实战 更新中
    数据分析篇 更新中
    前端入门+flask 全栈篇 更新中
    django+vue全栈篇 更新中
    拓展-人工智能入门 更新中
    网络安全之路 踩坑篇 记录学习及演练过程中遇到的坑,便于后来居上者
    网安知识扫盲篇 三天打鱼,不深入了解原理,只会让你成为脚本小子。
    vulhub靶场漏洞复现 让漏洞复现变得简单,让安全研究者更加专注于漏洞原理本身。
    shell编程篇 不涉及linux基础,最终案例会偏向于安全加固方向。 [待完结]
    WEB漏洞攻防篇 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
    渗透工具使用集锦 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
    点点点工程师 测试神器 - Charles 软件测试数据包抓包分析神器
    测试神器 - Fiddler 一文学会 fiddle ,学不会倒立吃翔,稀得!
    测试神器 - Jmeter 不仅是性能测试神器,更可用于搭建轻量级接口自动化测试框架。
    RobotFrameWork Python实现的自动化测试利器,该篇章仅介绍UI自动化部分。
    Java实现UI自动化 文档写于2016年,Java实现的UI自动化,仍有借鉴意义。
    MonkeyRunner 该工具目前的应用场景已不多,文档已删,为了排版好看才留着。


    今天要和大家来聊聊关于自动化测试的持续集成,通过前文的学习,我们的自动化测试框架、测试的思想已经融入到了整体的代码编写过程中了。接下里的下一步就是如何让自动化测试能够像开发一样、敏捷思想一样,能够持续集成的跑起来。可能大家对持续集成还不是太了解,那就先简单的了解一下持续集成的思想吧。

    🐳 持续集成思想

    现如今的互联网软件的开发与发布,已经形成了一套标准流程,最重要的组成部分就是持续集成。(简称 CI ,其实就是 Continuous integration

    见下图:(这个图的描述的就是持续集成在不断的开发、发布、测试… 这样的轮回的一个过程 ,快速的进行迭代。这就是持续集成的一个核心概念。)



    所以,持续集成指的就是 "频繁的(一天多次)将代码集成到骨干"

    集成的好处主要有以下几点:

    • 1、快速发现错误;定位错误也比较容易,精确的知道是哪次提交导致了这个错误。

    • 2、防止分支大幅偏离主干;如果像是以前的瀑布式开发,大家都在自己的本地进行开发。当开发的差不多的时候 ,在推到主干上去(此时经常已经过去了一个比较长的周期)。如果不是这样的经常集成,会导致以后的集成难度越来越大,设置会出现太多的错误导致难以集成的情况。

    持续集成的目的:让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。

    Martin Fowler 说过:"持续集成并不能消除Bug,而是让它们非常容易发现和改正。"

    持续集成的前提是能够做到完善的自动化测试、能够自动的构建部署,所以这里面就有了自动化测试的集成。其实准确来说,自动化测试的持续集成也分为两个方向:

    • 1、针对代码:就像开发人员一样,开发每次提交代码,都会开始自动部署、自动化测试。自动化代码也是一样的,当每次进行提交的时候,可以让其自动的执行自动化测试。自动的跑一遍,来验证我们的代码。(当然了这不是我们的目的,我们的主要目的是下面的第二种)
    • 2、验证最新版本的代码:当开发进行最新的代码的部署之后,我们利用最新版本的自动化代码去验证开发部署的代码是否有问题。这是自动化测试的集成非常重要的一点,所以才在这一章节中带着大家一起去了解怎么样将前面写好的自动化测试脚本,做成持续集成的样子。

    ps:要使用集成,必然要有对应的工具,这里我们使用的是最常用的工具 ---> "Jenkins"

    🐳 Jenkins 介绍

    Jenkins 简单介绍及优点:

    • Jenkins 是一款 非常简单、非常好用、也是非常通用化的持续集成引擎,即使是如今国内的一线大厂自己研发的集成工具,本质而言底层使用的也依然是 Jenkins所以我们也说 "Jenkins" 是一款可以扩展的持续集成引擎。
    • Jenkins 是所有 CI 产品中在安装和配置上最简单的
    • 基于 WEB 访问, 用户界面非常友好、直观、灵活。

    Jenkins 主要应用场景:

    • 持续、自动地构建 / 测试软件项目
    • 监控一些定时执行的任务

    Jenkins 特点:

    • 是基于 Java 开发的(这首先就代表着其拥有很强的扩展性)
    • 不仅限于构建基于 JAVA 的软件,所以它又拥有着强大的通配性
    • Jenkins 拥有大量的插件,这些插件极大的扩展了 Jenkins 的功能,可以直接通过 WEB 界面来进行安装与管理,使用起来非常的快捷和迅速。
    • 可以和现有的代码库:git、ant、maven 等快速的集成,并且能很好的执行自动化测试。

    关于安装、配置、搭建 Jenkins 继承环境的场景参考下面两篇文章:

    🐳 利用 Jenkins 配置部署自动化测试的集成环境

    • 1、新建项目,选择自由风格。



    • 2、进入集成项目的配置页面

      • 2.1、general 【描述这里随便填写,一般填写项目的简述】


      • 2.2、源码管理
        • 如果有SVN、Git 的情况下,选择 Subversion ,然后填写我们的SVN、Git 地址
        • 这里因为我们没有SVN,所以我们选择 None


      • 2.3、构建触发器(比较重要的是 【其他 "工程构建后触发 " - “build after other projects are built” 与 “定时构建” - “build periodically”】)

        • 触发远程构建
        • 其他工程构建后触发 —> 英文为 “build after other projects are built” ,其实也就是持续集成
        • 定时构建 —> 英文为 “build periodically”
        • GitHub hook trigger for GITScm polling
        • 轮询 SCM —> 英文为 “poll scm”


    🐬 定时构建任务 - build periodically

    这里我们先来介绍一下 定时构建 的任务(主要有5个参数,见下图)


    定时构建语法如下:

    * * * * *  注意:五个“*”之间有空格,从左到右分别是
    分钟	小时内的分钟数(0-59)
    小时	一天中的小时(0-23)
    DOM	每月的一天(1-31)
    月	月份(1-12)
    DOW	星期几(0-7),其中0和7是星期日。
    

    要为一个字段指定多个值,可以使用以下运算符。按照优先顺序

    * 指定所有有效值
    M-N 指定一个值的范围
    M-N/X或者*/X在整个指定范围或整个有效范围内以X为间隔步进
    A,B,...,Z 枚举多个值
    

    为了允许定期安排的任务在系统上产生均匀负载,H应尽可能使用符号(对于"散列")。例如,使用 0 0 * * * 十几份日常工作将会在午夜造成大量高峰。相比之下,使用 H H * * * 仍然会每天执行一次,但并非全部同时执行,而是使用 有限的资源。

    所述H符号可以与范围内使用。例如,H H(0-7) * * * 意味着在凌晨12:00(午 夜)至上午7:59之间的某段时间。您也可以使用H带或不带范围的步距。

    该H符号可以被认为是一个范围内的随机值,但它实际上是作业名称的散列, 而不是随机函数,因此对于任何给定的项目,该值都保持稳定。

    请注意,对于月份日的字段,由于月份长度可变,因此短周期(例如*/3H/3 不会在大多数月份结束时保持一致)。例如,*/3将在一个月的第1,431天运行,然后再在下个月的第二天运行。哈希总是选在1-28范围内,所以H/3 在一个月的月底之间会产生3到6天的间隔。(更长的周期也会有不一致的长度,但效果可能相对较不明显。)

    以空格开头的空行和#行将被忽略为注释。

    此外,@yearly@annually@monthly@weekly@daily@midnight,并且@hourly也支持方便的别名。这些使用散列系统进行自动平衡。例如,在一小时内的任何时间 @hourly 都是相同的 H * * * * ,并且可能意味着 @midnight 实际上是指从凌晨12:00到凌晨2:59之间的某段时间。(怎么读都感觉这里有些不通顺,但是又想不出来怎么组织语言)

    例子:

    #每十五分钟一次(可能在:07,:22,:37,:52)
    H / 15 * * * * 
    
    #每小时上半场每十分钟一次(三次,也许是:04,:14, 24)
    H(0-29)/ 10 * * * * 
    
    #从上午9:45开始每小时45分钟,每个工作日下午3:45结束,每两小时一次。
    45 9-16 / 2 * * 1-5 
    
    #每周工作日上午9点至下午5点每隔两小时一次(可能在上午10:38,下午12:38,下午2:38,下午4:38)
    HH (9-16)/ 2 * * 1-5 
    
    #每月1号和15号每天一次(12月除外)
    HH 1,15 1-11 *
    

    🐬 持续集成(其他工程构建后触发 ) - build after other projects are built



    🐬 构建环境

    PS:关于 构建环境 , 根据需要选择(可不选)



    🐬 构建



    MAC 配置环境遇到了个问题卡住了,明天补上。

    这里因为我使用的是 Mac ,所以我选择的就是 Execute shell ,然后输入 启动、运行脚本命令

    cd /Users/caoke/PycharmProjects/test
    python3 test_login_suite.py
    


    这里构建会遇到各种稀奇古怪的问题,我就记录下来两个,参考如下:

    Mac环境下Jenkins部署Python报错 - ModuleNotFoundError: No module named ‘selenium‘ (已完美解决)

    Jenkins部署Python报错 - selenium.common.exceptions.WebDriverException: Message: ‘chromedriver‘ executabl

    运行结果如下:



    OKK,搞定!太难受了啊!

    🐳 如何让 Jenkins 拥有一个属于自己的报告

    接下来我们想要做的更多一些,比如想要 Jenkins 完成构建之后生成一份属于自己的报告。OK,那么久进入 配置 里面配置一下我们的报告吧。



    进入配置页面后选择 构建后操作 (也就是最后一个)

    选择 Publish JUnit test result report


    需要注意的地方哈,其实我们的脚本里并没有生成 “.xml” 格式的报告,所以即使保存了也不会生成。

    所以这个时候,我们需要回到我们的脚本中,将我们的代码修改为生成 ".xml" 格式的测试报告。


    修改脚本之前,需要安装一个第三方模块 xmlrunner ,安装命令 pip install xmlrunner ,或者直接在设置中心安装。


    test_login_suite.py 模块的脚本修改如下:

    # coding:utf-8
    
    
    import sys
    sys.path.append("/Users/caoke/PycharmProjects/test")
    
    
    import unittest
    from travel_login_ddt import TestTravel
    from HTMLTestReportCN import HTMLTestRunner
    from xmlrunner import xmlrunner
    
    
    suite = unittest.TestSuite()
    suite = unittest.TestLoader().loadTestsFromTestCase(TestTravel)
    
    
    # file = open("result.html", "wb")
    # HTMLTestRunner(stream=file, title="UI自动化测试报告", description="User:Husky\nCase:test_login").run(suite)
    xmlrunner.XMLTestRunner(verbosity=2, output='测试报告').run(suite)  # 这里的"outout"的值要与 Jenkins 设置的报告名称路径一致
    
    
    if __name__ == '__main__':
        unittest.main()
    

    此时,再次重新构建回生成一个 XML 格式的报告,可以在 Jenkins 中查看,但是这里因为我配置的路径有问题,始终无法在 Jenkins 查看到,但是目前我也不想解决了,耽搁我太多时间了。报错内容如下,就是配置的报告路径的问题。(后续解决了我会回来把这个坑埋了的,哪位大佬如果知道如何解决的话,还请不吝赐教。

    错误信息如下:

    ERROR: Step ‘Publish JUnit test result report’ failed: No test report files were found. Configuration error?


    如果哪位在运维领域有涉足,知道如何解决这个问题的话,还望不吝赐教。后续如果我解决了的话,我也会更新上来!



    展开全文
  • 在上一篇章就软件自动化测试当中最简单也是最常用接口自动化测试进行了一个比较完整性的实战。可是当我们投入到实际工作应用中就会发现,虽然接口测试很有效也很容易推广开来,但是很多时候真正需要测试验证的不仅仅...
    点击下方图片有惊喜,精美礼品等你来拿哦


    前言
    ✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS 赋能的博主 ✌
    🏆 CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主 🏆
    📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
    💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬
    🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦


    专栏系列(点击解锁)学习路线指引知识定位
    🔥Python全栈白皮书🔥 零基础入门篇 以浅显易懂的方式轻松入门,让你彻底爱上Python的魅力。
    语法进阶篇 主要围绕多线程编程、正则表达式学习、含贴近实战的项目练习 。
    自动化办公篇 实现日常办公软件的自动化操作,节省时间、提高办公效率。
    自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。
    数据库开发实战篇 更新中
    爬虫入门与实战 更新中
    数据分析篇 更新中
    前端入门+flask 全栈篇 更新中
    django+vue全栈篇 更新中
    拓展-人工智能入门 更新中
    网络安全之路 踩坑篇 记录学习及演练过程中遇到的坑,便于后来居上者
    网安知识扫盲篇 三天打鱼,不深入了解原理,只会让你成为脚本小子。
    vulhub靶场漏洞复现 让漏洞复现变得简单,让安全研究者更加专注于漏洞原理本身。
    shell编程篇 不涉及linux基础,最终案例会偏向于安全加固方向。 [待完结]
    WEB漏洞攻防篇 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
    渗透工具使用集锦 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
    点点点工程师 测试神器 - Charles 软件测试数据包抓包分析神器
    测试神器 - Fiddler 一文学会 fiddle ,学不会倒立吃翔,稀得!
    测试神器 - Jmeter 不仅是性能测试神器,更可用于搭建轻量级接口自动化测试框架。
    RobotFrameWork Python实现的自动化测试利器,该篇章仅介绍UI自动化部分。
    Java实现UI自动化 文档写于2016年,Java实现的UI自动化,仍有借鉴意义。
    MonkeyRunner 该工具目前的应用场景已不多,文档已删,为了排版好看才留着。


    在上一篇章就软件自动化测试当中最简单也是最常用接口自动化测试进行了一个比较完整性的实战。可是当我们投入到实际工作应用中就会发现,虽然接口测试很有效也很容易推广开来,但是很多时候真正需要测试验证的不仅仅是接口测试的返回,还包括前端页面的重现。所以近下来的学习内容就将进入到 WEB 自动化(即 WEB 端 UI 自动化)

    在早之前的 基于JAVA实现的WEB端UI自动化 专栏,写过一篇文章 《基于JAVA实现的WEB端UI自动化 -自动化测试简单介绍》,感兴趣的小伙伴可以看一看,关于自动化测试基础理论略同。

    🐳 什么是 WEB自动化


    • WEB 自动化测试就是把在网页上的人工操作转化为使用机器、软件、程序来测试产品的过程。也就是把大量需要人工回归用例、人工操作的这些手段由计算机代替执行的一种测试方式。模拟人工执行的一系列操作,同时最终会抓取并判断结果是否符合我们的预期的这样一个过程。
    • 换而言之,就是把 “点点点” 通过编程手段实现的一种测试的手段。(做 WEB 自动化之前首先需要知道自己要测什么,把部分的 “点点点” 的内容。转化为代码、脚本,减轻手工测试的工作量 ,从而提高产品的质量。
    • 做 WEB 自动化与做接口自动化有一个相像的地方,那就是 WEB 自动化同样是不在于发现新的功能的问题,而是保证产品、项目在迭代与重构的过程中,原有的已经上线过的功能依旧保持正常。以及执行一些手工很难达到的测试场景目的。(比如一个快速输入的场景,想要输入几百个字符,这样的快速输入的问题就需要 WEB 自动化来实现。)
    • 还有就是在意比较大型的项目中,功能点太多的情况下,没有办法保证每一次上线发布之前通过手工的方式把这些功能都测试一遍,不太现实。不管是测试人员也好,还是开发人员也好都没有办法保证所有的功能在上线之前都能够验证完毕 。因此就需要这么一套自动化测试的方式,主要测试已经有的功能保证在每次交互的时候,已有的功能不会出现太大的问题。
    • 下图就是实现 WEB 自动化的一种方式。


    🐳 为什么要学习WEB自动化

    在真实的工作场景非 WEB 的测试,也就是接口测试,和我们 WEB 测试是互为补充的。自动化的基本原则是已接口自动化测试为主,WEB 自动化作为必要的补充。

    比较常见的需要 WEB 自动化补充的点,主要有两个方面:


    • 1、偏向于用户维度的场景测试
    • 2、验收的确认测试

    偏向于用户维度的测试,要求从用户真实的角度去测试产品的实现,只有包含了 WEB 层才能完整的验证用户的真实体验。从实现的角度来看,这一类的自动化测试用例不会覆盖的那么完善,只覆盖最基本的和核心的端到端的用户场景,所以一般情况下不使用 “WEB自动化” 测试那些步骤特别负载或者边边角角的异常场景的测试用例,这是一个方面。

    另一方面就是我们的测试逻辑和用户界面绑定在一起,无法绕过界面直接测试核心逻辑页面,在这种情况下也是不得已而为之的,在实际工作中也是最经常出现的。尤其是现在,频繁的使用微服务的情况下,服务与服务之间的交互变得比较复杂,就比较难直接通过接口一次性搞定。这样就会造成接口与接口之间的处理上存在着不稳定的因素,甚至有些处理是完全放到前端来做处理,这个时候就需要 " WEB自动化" 来进行辅助。

    说理两个方面,无论是上面说的哪种情况。都有一个共同的特征,都是从一个 最终用户 来出发,对大多数有页面的系统来说,WEB 才是最理想的集成或者说系统测试的入口。也是对于产品来说、对于用户来说、对于公司来说最最需要测试的地方,同时也可以弥补开发自测、接口上的一些不足。

    当然,我们的最终目标是服务于测试项目。取代那些重复的、枯燥的…操作,从测试进阶上的要求,将我们的技术范畴从使用什么技术去完成,变为多角度多纵深的去完成。

    学习完自动化就会发现一个事情, 接口测试好不好呢?那是相当的有效!但是呢,接口是看不到摸不着的,但是如果做 WEB 自动化框架,能跳出浏览器就简直太神了。

    同时呢,也是为了我们面试这一环节能够获得更好的待遇。

    简单来说就是以下四点:


    • 1、WEB自动化是面向用户的 “自动化”。
    • 2、可以弥补单元测试、接口测试的不足。
    • 3、取代部分重复枯燥的操作。
    • 4、功能测试岗位的进阶。

    🐳 什么样的项目适合做WEB自动化

    有了要学习 WEB自动化 的必要性并不是说我们马上就要动手去做了,还需要稍微思考一个问题,是不是所有的项目都适合做 WEB自动化?上文关于 WEB自动化 的重要性说了很多,在关于自动化测试策略的手提到 “以接口测试为主,WEB自动化进行适当的补充”。为什么说是补充,而不是使用 WEB自动化 作为主力呢?因为 WEB自动化的缺点也是很明显的。


    • 1、开发 WEB自动化 用例的成本相较于 接口自动化 要多很多
    • 2、WEB自动化不是很稳定,在页面变更、迭代过于频繁的项目中,可能页面今天是这个样子,明天又变成另外的样子了。这样的话,之前辛辛苦苦写的很多的 WEB自动化测试脚本 很有可能就会废掉,需要推翻重写。

    所以在这里,我们就来聊一聊什么样的项目能够最大程度的发挥 WEB 自动化的优势。对应前面所说的,首当其冲的就是 迭代可以很多、需要构建验证的次数也可以很多,但是尽量不要有频繁的变动,界面越稳定越好,而且项目的维护周期长,能够稳定存在。

    稳定对于自动化测试来说,非常的重要,这样能够让我们的 WEB自动化脚本 能够使用的频率更高,这样脚本的成本也就降的越低。

    如下:


    • 1、任务测试明确,不会频繁变动。
    • 2、每日构建后的频繁测试验证。
    • 3、比较频繁的回归测试。
    • 4、软件系统界面稳定,变动较少。
    • 5、软件维护周期较长。
    • 6、被测试系统开发比较规范,能够保证系统的可测试性。(前端代码太随意,测试人员两行泪。
    • 7、测试人员具备不错的编程能力。
    • 8、项目进度压力不宜太大。(这句可能有点玩笑,目前我所接触的项目压力不大的只有银行的后台项目,一条需求审批得半年。)尤其是在任务的前期,刚开始动手写的时候,尽量争取到充裕的时间去搭建框架、编写脚本等等。



    🐳 WEB 自动化面临的问题如何改进

    上面我们提到过,当遇到不稳定、难以维护的项目时,是非常不适合使用 WEB自动化 的。那么面对这个问题,要如何改进呢?

    有的公司在自动化测试领域有一个 721 规则,这个规则就是说 70% 的自动化测试工作集中在底层的接口测试和一些单元测试, 20% 的测试工作是一些集成的测试,10% 的测试工作是尽量通过 UI自动化 来实现。

    既然 WEB 自动化是需要有它的辅助作用的,那么就需要用有限的条件、有限的精力将 WEB 自动化做的更好,怎么样才能叫更好呢?就需要做到以下三点:


    • 更优秀的架构(框架)设计
    • 更合理的维护方式
    • 更稳健的测试环境

    合理的架构可以保证我们自动化测试代码的编写更加方便、简洁;维护起来更加的容易;环境操作起来更加的简单稳定。

    OKK,关于WEB自动化的介绍和一些基础理论的探讨到这里就告一段落,下一章节我们将了解一下 "软件自动化测试工具的历史与WEB自动化测试工具的选择。"



    展开全文
  • Web自动化测试实战(一)

    万次阅读 多人点赞 2019-08-23 15:41:39
    一丶认识web自动化测试 1. 什么是自动化测试? 2.为什么进行自动化测试? 3.自动化测试的分类 二丶元素定位 1.为什么要学习定位元素? 2.元素定位的工具或手段有哪些? 3.环境及工具 4.css选择器 一丶认识web...

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!

    目录

    一丶认识web自动化测试

    1. 什么是自动化测试?

    2.为什么进行自动化测试?

    3.自动化测试的分类

    二丶元素定位

    1.为什么要学习定位元素?

    2.元素定位的工具或手段有哪些?

    3.环境及工具

    4.css选择器


    一丶认识web自动化测试

    1. 什么是自动化测试?

    自动化测试的概念:

    • 软件自动化测试就是通过测试工具或者其他手段,按照测试人员的预定计划对软件产品进行自动化测试,他是软件测试的一个重要组成部分,能够完成许多手工测试无法完成或者难以实现的测试工作,正确合理的实施自动化测试,能够快速全面的对软件进行测试,从而提高软件质量,节省经费,缩短软件的发布周期

    自动化测试的历史:

    • 自动化测试就是任何利用工具来辅助的测试,几乎在计算机工业产生的第一天,这种测试就出现了。而且历史上从来没有出现过“测试自动化取代测试工程师工作”这种事情发生,除非你完全忽略测试人员们的真正工作。 基于同样的原因,自动空间探测器从来都不是用来“取代太空科学家的工作”,他们只是拓展了科学家的探索范围。自动化测试也是意味着拓展了测试者的探索范围。 测试自动化根本就不是新生事物,在很久以前,大约在上世纪40年代末期。开发人员自己测试程序。到了六十年代,关于测试的论文都是在论述开发人员如何测试他们自己的程序。测试(test)和调试(debug)这两个概念也没有被区分开。随着软件系统的规模越来越大,独立测试的理念还是变得时髦起来。在1972年的Chapel Hill,关于软件测试的第一次会议召开,这次会议推动了软件测试开始作为独立于开发的技术被讨论。 不过在这个会议上,我想他们把一件事情搞错了。就是他们对测试自动化寄予了很多期望和热情。这种期望最后没有成功实现,不过不是因为缺少实践,而是缺乏足够好的理解。 他们没有理解的,同时也是许多同时代程序员没有理解的是:好的软件测试,天然的,必然的是一种人类活动,必然的,而不是偶然的。测试是一种社会活动,一种心理活动。软件越复杂,人在使用和识别软件问题上的作用就越大。但是Chapel Hill会议被那些受训练为程序员和电子工程师的人占据了,这个会上缺乏那些懂得如何去思考的人。 受训的独立测试人员的理念要比自动化测试的理念还要新,但是和测试自动化比起来,这个理念的接受程度还不够,因为对测试人员的培训实在是太糟糕了! 所以有人理解测试是一种简单的技术,测试就是保证对API的调用不会让程序像个不受控的野兽一样滚到不知哪里去。这种理念还在那,比如说微软。我被告知,Microsoft Office,一个仍然在膨胀中的软件,是由那些没有系统学习过软件测试的开发人员,在那些“自动化测试工具”的支持下写出来的。 测试自动化无法再现测试工程师构想测试、控制测试、修改测试、观察和评估产品时的那些创造性思维。测试自动化不能完成那些高质量的测试。所以,测试自动化从来就不意味着:把那些测试工程师提供的服务自动化。 总之一句话,测试自动化意味着使用测试工具自动化测试是个古老的理念

    2.为什么进行自动化测试?

    自动化测试主要有这么些好处:

    1)缩短测试周期

    计算机行业更新迭代快速,大量频繁的回归测试消耗时间,自动化测试能够将重复的实行交给计算机去做,加快测试速度。

    2)避免人为出错         

    测试人员不可能持续高度集中,并且人类易受外界影响(头疼脑热,精神不振),可能会造成人为错误       

    3)测试信息存储

    自动化测试将测试信息和数据储存在文件中,思路清晰明确,交接方便

    4)轻易获取覆盖率

    自动化测试能够解放测试人员,使测试人员能够有更多的精力做那些非重复性的工作。

    5)其他

    自动化测试可以是实现自动或者定时执行

    自动化测试的方向是对的,而且趋势也是如此,但是有些自动化实现不了的还是会手动测一把

    3.自动化测试的分类

    1.整体分类:

    1)自动化功能测试

    2)自动化性能测试

    2.自动化功能测试的分类:

    1)单元测试(程序员搞定)    

    2)功能测试              

    3)接口测试

    大中型项目或长期项目可以采用自动化测试

    3.性能测试主要是使用测试工具

    Loadrunner、Jmeter等,对软件进行压力测试、负载测试、强度测试等等,因为这些无法用手工进行代替,所以必须自动化。

    为了测试一个web站点的服务能力,需要模拟上千上万的请求(比如打开浏览器访问站点),人的速度是远远达不到这样的操作的

    4.web自动化条件和使用范围

    1.使用自动化的前提条件

    1)手动测试已经完成,后期再不影响进度的前提下逐渐实现自动化     

    2)项目周期长,重复性的工作都交给机器去实现     

    3)需求稳定,项目变动不大     

    4)自动化测试脚本复杂度比较低     

    5)可重复利用

    2.使用自动化测试的场景     

    1)频繁的回归测试     

    2)冒烟测试     

    3)互联网迭代频繁     

    4)传统行业需求变化不大,应用频繁     

    5)性能测试

    5.web自动化常用的工具

    1.常见的自动化web测试工具:

    1)QTP(收费)

    QTP是Mercury公司的Quick Test Professional的简称,是一种自动测试工具。     

    2)Selenium(开源)       

    ThroughtWorks一个强大的基于浏览器的开源自动化测试工具,通常用来编写web应用的自动化测试   

    3)RFT(收费)

    IBM Rational Test Professional的简称,是一款先进的自动化的功能和回归测试工具,使用与测试人员和GUI开发人员,基础是针对Java,.NET的对象计数和基于web应用程序的录制,回放功能。

    4)Watir(开源)         

    使用Ruby实现的开源web自动化测试框架,小巧灵活     

    5)Sahi(开源)         

    印度一家公司开发的web自动化测试工具,简单易用,支持Ajax和web2.0

    6.QTP与Selenium的比较

    • Selenium是开源的、免费的,QTP是商业版、收费的
    • Selenium支持java/python/ruby/php等,QTP早期版本只支持vbs
    • Selenium只能测试浏览器,QTP则都可以
    • Selenium支持操作系统多,而QTP只支持Windows
    • Selenium支持各大主流浏览器:I.E./Firefox/Chrome,而QTP只支持I.E. 

    7.web自动化的前景

    软件测试职业发展方向,大体上可以分为管理路线、技术路线、管理+技术路线。

    测试初级阶段

    测试工程师,属于软件测试职业生涯的初级域,其适用范围是入行软件测试3年内的常规测试从业者,其主要工作内容是按照测试主管(即直接上司)分配的任务计划,编写测试用例、执行测试用例、提交软件缺陷,包括提交阶段性测试报告、参与阶段性评审等。

    管理+技术路线

    首先是常规路线,这条发展路线要求管理与技术并重,因为软件测试的行业特点决定了这个因素:测试工程师向上晋升到测试主管、测试经理、测试总监,直至咨询域的更高方向!

    测试主管是企业项目级主管,对于中小型软件公司也可以是企业级主管,属于中级发展域,适用范围是2到5年职业经验的测试从业者。其工作内容是根据项目 经理或测试经理的计划安排,调配测试工程师执行模块级或项目级测试工作,并控制与监督软件缺陷的追踪,保证每个测试环节与阶段的顺利进行。严格来说,这个级别更多属于测试的设计者,因为企业的测试流程搭建是由更高级别的测试经理或相关管理者来做的,测试主管负责该流程的具体实施;而更多的工作,是思考如何 对软件进行更加深入、全面的测试。测试主管比较有创造性的工作内容就是测试设计,而恰恰很多公司忽略了或没有精力来执行此工作内容!应该说,在一个企业里做了3年左右测试工作的人员,很容易晋升到该职位,而之所以晋升,是与个人测试技术的过硬、测试方法的丰富,加上对测试流程的监控力与执行力的职业素质息息相关!

    测试经理是更高级别的测试管理者,属于高级测试方向域。对于大中型软件公司,该职位尤为重要,并且对其职业要求也比较高,一般适合4到8年的测试从业 者,在管理与技术能力双双比较成熟的情况下,可以结合具体环境晋升到该级别。测试经理负责企业级或大型项目级总体测试工作的策划与实施。测试经理除了需要统筹整个企业级或项目级测试流程外,还要对于不同软件架构、不同开发技术下的测试方法进行研究与探索,为企业的测试团队成员提供指导与解决思路,同时还要合理调配不同专项测试的人力资源(如业务测试工程师、自动化测试工程师、白盒测试工程师、性能测试工程师),对软件进行全面的测试;另外,一些企业里,测 试经理还需要与客户交流与沟通,负责部分的销售性或技术支持性工作。

    测试总监,属于常规发展路线的最高域,该职位一般在大型或跨国型软件企业,或者专向于测试服务型企业有所设立,一般设立测试总监的企业,该职位都相当于CTO或副总的级别,是企业级或集团级测试工作的最高领导者,驾驭着企业全部的测试与测试相关资源,管理着企业的全部测试及质量类工作。而其职业要求,也是技术与管理双结合。

    技术路线

    技术路线中级域

    技术路线,划分为三个半方向,分别是自动化测试工程师、白盒测试工程师、性能测试工程师和认证测试工程师;前三者适用于通用软件测试领域,认证测试工程师乃嵌入式测试领域职位,至少目前仅出现在嵌入式领域。

    自动化测试工程师,定义在功能测试范畴,指通常所说的依靠自动化测试工具进行软件黑盒测试的工程师。从大环境讲,自动化测试是软件测试执行阶段的必然趋势,社会对于软件测试的认可度以及对自动化测试人才的需求必将日益增加。

    白盒测试工程师,定位于在软件测试周期的单元测试阶段对软件进行的代码级测试的人,包括代码走读、代码功能与逻辑测试、代码内存泄漏检查、代码运行效率检查、代码测试覆盖率分析等。如果说,自动化测试只是依靠脚本语言完成测试脚本编写与调试的过程(因为自动化测试工程师的工作重点不在编写脚本),对于自动化测试工程师的技术要求要相对偏低的话,那么白盒测试工程师就要对大型程序开发语言的完全掌握,因此其技术要求相对偏高!

    性能测试工程师,即在系统测试阶段、功能测试后对软件系统性能指标进行采集分析和运行效率检测的人。在一个尽量压缩的测试流程里,功能测试可以手工进行,白盒测试可以不做,但是性能测试必须要做,除非该软件非网络类软件即单机版软件!软件测试,从宏观上可以划分为三个大方面:功能测试、性能测试、安全 性测试,功能测试说明软件做对了,功能测试+性能测试说明软件做好了,三者结合起来说明软件做的非常好!安全测试暂且抛之不提,这是下一个发展域的内容, 但是为了把软件做好,为了真正保证软件的质量,性能测试绝不容忽视;只因目前很多企业由于时间、成本、人力条件的限制,暂且不做性能测试。性能测试工程师相对来说,是三个技术路线里技术要求最高的,因为软件的性能瓶颈归根结底落实到代码的运行效率这个问题上,因此性能测试要做好,性能测试工程师起码要懂开发;而为了发现性能问题,要懂软件开发架构;为了定位性能问题,要懂操作系统、网络协议、应用服务器乃至数据库的原理与使用;为了最终解决性能问题,要根据定位的问题有针对性的对代码、操作系统、网络架构、服务器、数据库进行优化!当然性能测试是一个系统工程师,绝对不是一两个人的事情,对于常规性能测试 工程师,具备定位性能问题的能力即可。

    技术路线高级域

    进入技术路线的高级域,根据中级域的四个路线,可以细分成五个路线,分别是资深自动化测试工程师、资深白盒测试工程师、资深性能测试工程师、安全性测试工程师、标准化工程师,这些高级技术类人才完全与常规测试经理平齐,属于软件测试职业发展高级域。

    资深自动化测试工程师由自动化测试工程师晋升而来。如果说常规自动化测试工程师只是负责自动化测试脚本本身的设计与开发,那么资深自动化测试工程师的工作内容就是自动化测试这项工作的实施!也就是说,录制脚本-添加验证点-回放脚本只是最初始的自动化阶段,要在企业实施自动化测试,要有资深自动化测试工程师来设计数据驱动,开发测试框架,甚至一些企业内部自主开发小型测试工具(而非商业工具)的先例,这些也都是建立在资深自动化测试工程师具有深厚的技 术底蕴后,主导其他人员协调完成的事情。

    资深白盒测试工程师,其工作内容包含常规白盒测试工程师的内容,除此之外,要协助测试经理或测试总监攻关测试方法与技术性难题,因此其技术水平更加雄厚。如果常规白盒测试工程师是停留在某种程序设计语言类型的代码级测试,那么资深白盒测试工程师就要脱离程序设计语言本身,结合不同架构、多种开发技术交 互的情况下,寻找代码测试方法,并具有对代码优化的能力。

    资深性能测试工程师,来源于常规性能测试工程师,按照常规性能测试工程师的技术要求,资深性能测试工程师应该具备性能测试整体方案的设计能力,以及软件系统性能问题定位和性能优化的能力!除此之外,也要对主流的软件开发模式下的应用系统具有敏锐的洞察意识和感知意识。

    安全性测试工程师,其实从性能测试工程师衍生出来,因为只有具备性能测试经验的人,才对软件的开发模式、实现架构和技术本身充分了解,才会感知和预见软件系统存在的安全漏洞,加上其本人是测试出身,才知道如何通过系统漏洞尝试攻击软件系统,达到测试的目的。目前国内软件行业对于安全性测试的认识 尚未清晰,该职业也更没有普及,一般只限于军事类、机密类、防病毒类或其他高安全性软件的测试工作中。

    技术路线专家域

    在技术路线,向上继续提升的方向,我们称之为“技术专家”;如果说前面描述的技术职位的所涉范围都定位在企业内部,即企业级资深性能测试工程师,那么 技术专家,我们可以看作是领域级专项人才!随着软件测试行业的职位不断细化,每个人在自己擅长的领域走向深入,都可以成为该领域的技术专家,技术专家在自已经营的领域里,具有个人独到的见解和深厚的技术实力,而这类人才可以不再从事具体的测试工作,而是提供行业性测试技术咨询、培训等,为软件测试整体行业的发展,起到了鲜明的带头作用。

    管理方面

    管理方面中级域

    从事了1到3年左右的常规测试工程师,在经过对个人性格特点剖析后,如果认为自己是一个倾向于“高管理-低技能”的类型,那么想要实现自己的职业提升,可以向中级发展域的配置管理工程师、质量保证工程师、业务测试工程师转型。

    配置管理(SCM)与质量保证(SQA)同是CMM中的关键过程域(KPA),也同是现代软件工程里的必要角色,与软件测试同属软件开发团队的重要组成部分。只因这两个角色在软件工程里的人员配比数量相对较少,还不如软件测试这样规模化乃至于形成行业,而最多是一个职业;另外一个社会现象是,企业很少 直接从社会直接招聘配置管理工程师和质量保证工程师,而通常的做法是从企业内部的现有测试员工队伍里选拔,而转型后的测试工程师,就成为SCM或SQA。 分析其原因,我们可以感知,SCM、SQA与软件测试工程师都是关注于软件质量的相似职位,社会对于配置管理、质量保证的定义和工作内容并未普及,与其直接从社会招聘“0”基础的人来培养,倒不如从软件测试人员里升华!一般来说,这两种职位的上报对象是项目经理或相同级别管理者。

    转型后的配置管理与质量保证工程师,一定要转变一个意识,那就是常规测试工程师的工作范围很大一部分(不是全部)只限于测试流程,而配置管理和质量保证的工作范围是面向整个软件开发流程,二者的职业要求都非常重视软件工程知识体系的建立和软件开发总体流程的实施能力。由于配置管理工程师除了企业配置管理流程的搭建与实施外,一般会涉及配置管理工具的管理与维护,而质量保证工程师更多的工作是软件开发流程的控制与维护,故而配置管理对技术的要求稍高于质量保证。

    业务测试工程师,定义为面向行业类软件业务逻辑与工作流测试的人员。当前软件开发类型,很大一部分是行业类软件的应用,如ERP、 SCM、CRM、OA、电信、金融、财务、嵌入式、通信、手机、游戏……这就要求从事行业类软件测试的人员具备行业背景、业务知识,熟练该行业工作流程。从社会上出现的很多对此类经验要求的测试工程师招聘信息中,我们更加肯定这种趋势;所谓存在即是道理,既然社会上有了需求,那么就可以作为个人发展的方向。而另外一个特点是,业务测试工程师的工作内容主要是黑盒测试,属于功能范畴,因此对技术要求不大,设置一些大型行业类软件公司的业务测试工程师薪资丰厚,但是完全可以不懂技术,因为它的工作性质决定了不需要懂很多的技术!他们甚至连软件的界面测试都不做——交给常规测试工程师实施,而完全关注软件的业务性和易用性,由于其深厚的行业背景,可以为软件的在正式发布前提出很多建设性的意见,而这些建议正是软件开发商提高产品易用性、增加用户满意度、开拓市场、创造利润的关键因素之一!

    管理方面高级域

    当管理路线的中级域方向继续上升至高级域,就分别到达配置管理经理、质量保证经理、产品经理、业务专家。

    如果说配置管理工程师、质量保证工程师更加侧重于配置管理流程、质量保证流程的实施与日常管理维护,那么配置管理经理、质量保证经理就是更侧重于配置管理流程、质量保证流程的建立与改进。一般在中小软件企业,可能没有这两个角色,而全部的配置管理或质量保证工作都由工程师担当;但是大中型软件企业对资 深配置管理经理、资深质保经理求贤若渴。软件系统越庞大,软件开发团队规模就越庞大,软件开发流程中出现问题的几率就越高,高效管理软件开发流程,不断改进软件质量,是每个软件公司在技术上没有顾虑后的下一个急需攻破的难关!

    业务专家,属于行业内咨询、顾问的角色,已经几乎脱离了测试工作本身,而更多为企业的产品需求分析、设计、开发、测试等各个环节提供指导工作,其目的也是提高软件的易用性和稳定性,减少后期不必要的需求变更。该职位也同样在目前热点行业的大中型软件企业有所设立。

    产品经理,这个职位在很多企业有所设立,可以说它是质保经理的派生,只是它更侧重于软件在产品化之前的质量监控工作,包括软件开发流程、软件测试等技术与管理的各个方面。

    管理方面咨询域

    管理路线的最高发展域是咨询域,与技术路线的专家域类似,在配置管理、质量保证、软件产品化、行业领域达到高深造诣的人才,他们有丰富的从业经验、深厚的管理底蕴,具有对软件工程高瞻远瞩的慧眼和胆识,往往供职在专业的咨询与培训公司,提供IT业管理类咨询与培训的服务,推动着软件行业的前进。国内外很多为软件企业进行CMM咨询和实施的公司里,就是这些人才的大本营之一!

    二丶元素定位

    1.为什么要学习定位元素?

    1)计算机没有智能到人的程度。     

    2)计算机不能像手动测试人员一样通过眼看,手操作鼠标点击,操作键盘输入 

    3)计算机通过一系列计数手段找到元素(按钮、输入框、模拟键盘等)

    2.元素定位的工具或手段有哪些?

    1)css选择器     

    2)xpath

    3.环境及工具

    1)请查看博主的Selenium3与Python3实战开发Web自动化测试框架(一)该篇博客中可以进行学习(windows+python3+selenium3+[chrome/firefox/ie])

    2)现在博主演示的安装firefox浏览器的firepath以及firebug两个插件,博主电脑本身已经安装了Firefox68版本的火狐浏览器,现在安装Firefox35版本,这两个版本是可以共存的

    • 安装时选择自定义

    • 安装完成后,进入选项中

    • 关闭所有的更新

    • 进入附件组件中

    • 选择从文件安装附件组件

    • 接下来则是选择firepath和firebug插件,进行安装即可

    • 安装完成后,重启浏览器,检查页面元素,则会出现firepath的菜单栏

    4.css选择器

    1.什么是css选择器?     

    CSS 中,选择器是一种模式,用于选择需要添加样式的元素。计算机能够通过css选择器定位到相应元素,我们在编写自动化测试脚本的时候很多时候是在不断地找到css选择器。

    2.css选择器语法     

    1)通过伪类名、id、标签名定位

    2)通过元素之前嵌套关系

    3)通过属性

    4)通过父子关系

    5)元素状态

    5.xpath

    1.什么是xpath?     XPath即为XML路径语言,它是一种用来(标准通用标记语言的子集)在 HTML\XML 文档中查找信息的语言。     W3School官方文档:http://www.w3school.com.cn/xpath/index.asp

    2.什么是XML?     XML 指可扩展标记语言(EXtensible Markup Language)     XML 是一种标记语言,很类似 HTML     XML 的设计宗旨是传输数据,而非显示数据

    3.XML与HTML

    4.节点的概念:每个XML/HTML的标签我们都称之为节点

    5.XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似

    查找某个特定的节点或者包含某个指定的值的节点

    选择未知节点

    选取若干路径

    补充:

    //*[text()=“x’x’x”]                            文本内容是xxx的元素     

    //*[starts-with(@attribute,’xxx’)]                属性以xxx开头的元素     

    //*[contains(@attribute,’xxxxx’)]                属性中含有xxx的元素     

    //*[@attribute1=value1 and @attribute2=value2]    同时有两个属性值的元素     

    6.xpath实例(没有固定的写法,只要能找到页面的元素都可以

    • 如在csdn网站首页中,如何通过xpath匹配首页中推荐内容的标题

    • 如在糗事百科文字栏中对页面所有文章进行选中,使用xpath中的position方法将文章的div容器进行选中

    • 查看匹配到的div个数也就是当前页面所有文章数目,选中第10条文章,选中后该文章所在的div标签属性中会多出高亮属性

    • 接下来则是获取该第10条文章的作者名称

    • 获取该篇文章下的评论数

    • 选择页面元素中的若干元素路径使用|进行分割,通过以下实例获取当前页面meta标签以及link标签的所有路径,实际可用于两个不同网站的登录页面,而不仅是用于一个项目的使用

    • 使用starts-with方法来匹配name属性以"rend"开头的标签

    • 除了使用starts-with方法之外还可以使用contains来匹配name属性下包含"rend"的标签

    7.css实例

    • 如在凤凰网中,通过css选择器来找到某个class属性的标签

    • 匹配id属性值为root的标签

    • 在css选择器中选择页面中所有的meta元素以及link元素,对比xpath是以,进行分割

    • 在css选择器选择div元素内部的所有a标签

    • 另选择div元素内部的所有a标签(注意跟以上面的区别

    • 选择ul标签之后的所有ul(所以第一个ul并没有选择)

    • 选择div标签之后的所有div,跟上面同理第一个div是不会被选中的(说白了就是+之前的为判断条件,之后的才会被选择

    • 匹配id属性值为subNav标签

    • 除了id和class以外其他的类似type value类型的都可以进行匹配

    • 匹配class属性中包含"clearfix"的所有标签

    • 匹配src属性的值以"https://x0"开头的标签

    • 匹配src属性的值以".js"结尾的标签

    • 匹配src属性的值包含"2019"的标签

    • 匹配class属性为layout-2QlrJZv-父元素下的第二个字元素div的标签

    • 匹配父元素body倒数第一个也就是最后一个子元素所在的标签

    • 通过复制标签唯一选择器,并粘贴到Firepath中,从选择器的匹配规则中可以发现根本不会使用nth-last-child这种方式

    • 匹配没有子节点的元素

    8.元素定位方法总结

    • 在firefox火狐浏览器中可以通过浏览器自带的检查元素进行检查然后复制唯一选择器即可,然后通过firepath进行检验是否正确

    • 然后是通过Inspect in Firepath进行获取定位元素,会自动获取其css匹配规则

    • 同理在chrome谷歌浏览器中使用自带的功能获取到元素css或者xpath的匹配规则

    展开全文
  • 基于Python的Web自动化测试的实践.pdf
  • 本课程包含了Selenium 4.0新版本的介绍;Selenium的历史演变;框架原理。 此外,本课程重点介绍了4.0.0a6版本下的Selenium IDE的应用...Selenium IDE代码导出,以及Python Pytest框架测试实战。 Selenium IDE测试总结。
  • 当我们定位到具体的一个元素的时候就可以对这... 这些都是需要我们了解的内容,也是在做自动化测试的时候经常遇到的一些基本场景。今天这一章节,我们就先来学习一下元素的基本操作与鼠标键盘模拟事件的操作吧。......
  • 基于Python3.3+Selenium3.0框架实战Web自动化测试实战视频教程。本课程由9个章节组成,包括有Python3.3及Selenium3.0测试环境搭建、Python及Selenium基础知识宣讲、Web页面元素定位及操作、动化测试框架讲解、自动化...
  • 前面章节利用本地 “html” 文件的虚拟场景辅助我们了解了元素的定位、元素的操作,熟悉了正常...从这一章节开始,将对之前接口自动化测试篇章所使用的旅游网这样的一个项目,进行真实的UI自动化脚本的设计。.........
  • WEB自动化的最后来和大家一起总结一下该阶段所学的内容,同时也和大家聊一聊未来对相关技术的展望。接下来就是今天章节的两个方面,第一个就是这个阶段关于 " WEB-UI 的自动化总结",第二方面就是自动化测试平台的...
  • 电商项目Web自动化测试实战

    千次阅读 多人点赞 2020-02-26 16:56:54
    电商项目自动化测试实战 前言: Web自动化主要是功能自动化和部分功能的兼容性测试 Web自动化主要针对:主要流程和重要功能的自动化(有效等价类、异常场景) 测试准备: TPshop开源电商项目 测试业务场景: 登录-&...
  • Web自动化测试实战(四)

    万次阅读 2019-08-27 12:23:44
     Web自动化测试实战(三)知识点回顾 1.unittest基本概念 1.什么是是unittest框架?   Unittest单元测试框架是专门用来进行测试的框架 2.主要概念:    test fixture:代表了用例执行前的...
  • 今天来跟大家聊一聊软件自动化测试工具的历史演进,一起来探讨一下现在的自动化架构应该怎样去设计和实现。
  • 虫师写的 Selenium2_Java自动化测试实战,值得与大家一起学习。
  • 自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。 数据库开发实战篇 更新中 爬虫入门与实战 更新中 数据分析篇 更新中 前端入门+flask 全栈篇 更新中 django+vue全栈篇 更新中 拓展-人工...
  • 今天给大家分享一个简单易操作的实战项目(已开源) 项目名称 ET开源商场系统 项目描述 ETshop是一个电子商务B2C电商平台系统,功能强大,安全便捷。适合企业及个人快速构建个性网上商城。 包含PC+IOS...
  • 一句话,自动化测试工具。它支持各种浏览器,包括Chrome,Safari,Firefox等主流界面式浏览器,如果你在这些浏览器里面安装一个Selenium的插件,那么便可以方便地实现Web界面的测试。Selenium2,又名WebDriver,它的...
  • 测试对象的定位和操作是我们利用 selenium 编写自动化脚本和 webdriver 的核心内容,其中 "操作" 这一部分又是建立在 "selenium" 元素定位的基础之上的。所以对元素对象的定位就显得越发的重要,接下来我们就学习...
  • web自动化测试实战之生成测试报告

    千次阅读 2020-05-31 11:21:07
    同志们,老铁们,继上篇文章web自动化测试实战之批量执行测试用例之后我们接着继续往下走,有人说我们运行了所有测试用例,控制台输入的结果,如果很多测试用例那也不能够清晰快速的知道多少用...
  • 自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。 数据库开发实战篇 更新中 爬虫入门与实战 更新中 数据分析篇 更新中 前端入门+flask 全栈篇 更新中 django+vue全栈篇 更新中 拓展-人工...
  • 书承上一章节,我们现在做的自动化测试呢因为使用了 PO模式 ,就有了一套标准的设计模式与架构。但是缺少了在测试中所缺少的一个独特的东西,那就是测试数据。测试的过程中不会像开发那样编写一套代码那么容易,测试...
  • 自动化测试对程序的回归测试更方便。 由于回归测试的动作和用例是完全设计好的,测试期望的结果也是完全可以预料的,将回归测试自动运行... 可以运行更加繁琐的测试 自动化测试的一个明显好处就是可以在很短的时间内...
  • 工欲善其事必先利其器,所以呢,在我们真正通过 [Selenium] 开始编写自动化测试脚本之前,先要进行基本的环境设置和环境的搭建。
  • 1.你如何用Selenium测试? Selenium+Maven+TestNG+Jekins   2.你在测试中常遇到哪些问题? 这个常见的比如定位问题,   3.如何解决问题? 先思考,然后百度,考虑网速、电脑配置等原因,这题主要看重解决...
  • Web自动化测试实战(三)

    千次阅读 2019-08-26 18:08:21
    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!...三丶Selenium自动化测试框架 4.Selenium API高级 5 Selenium API的简单封装 三丶Selenium自动化测试框架 4.Seleni...
  • Selenium2 Python 自动化测试实战(扫描版)-2019PDF高清带目录(完整版)
  • 在使用 Python 进行编码的时候,会...所以在今天这个小章节里,需要续了解的就是 python 作为自动化测试里面的一种设计模式,尤其是 UI自动化 的专属模式 ---> "PageObject" 自动化设计模式,简称 "PO模式" 。.........
  • 自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。 数据库开发实战篇 更新中 爬虫入门与实战 更新中 数据分析篇 更新中 前端入门+flask 全栈篇 更新中 django+vue全栈篇 更新中 拓展-人工...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,523
精华内容 17,409
关键字:

Web自动化测试实战