• 12
  • 12
分享
  • 相比Selenium,Playwright好用在哪里?——软件测试圈
  • 曼倩诙谐 2021-04-16 10:24:13 字数 1515 阅读 3922 收藏 12

  最近发现微软出了一个用于Web UI自动化的python库——Playwright,很感兴趣,所以做了一些研究,和大家分享一下。

  说到UI自动化,可能大家和我一样,主要是用Selenium。毕竟Selenium可是UI自动化方面的王者。而且Selenium上手很快,使用者广泛,社区活跃,遇到问题随时可以找到一大堆相关的网页给你提供帮助。

  那既然这样,为什么新出的这个Playwright还能掀起一阵热潮呢?

  一方面这是IT技术领域的一个趋势,从业人需要时刻关注业内的新技术,新方向,不断提升自己的能力,或者给公司,团队带来新的idea,这样才能不断在职业生涯中稳步向前。

  另一方面,Selenium虽然有着各种突出的优势,但是弊端也很明显:

  它依赖多种不同的driver,根据浏览器的不断更新,就要不断去维护这些driver,以及处理相应的适用性问题。

  比如chromedriver升级到适用chrome version: 88,关于之前Ctrl+a的调用就不支持了,需要调整相应code。

  稳定性不够好。

  Selenium本身提供的方法,并不能保证test case稳定通过,因为element状态有时候并不可用,这个时候的actions肯定会有问题。

  虽然使用人员会封装Selenium方法,加入一些等待,甚至是元素状态轮询判断,但是稳定性增加的同时,运行时间也同时大幅增加。

  录制代码不稳定。

  因为Selenium IDE录制的代码是基于coordinate 或者DOM 层级结构,所以极其不稳定,也就导致IDE基本无人问津。

  Selenium的劣势,或许也就是Playwright能够快速崛起的抓住的机会吧。我们来看看Playwright到底有什么魔力,能撼动Selenium的王者地位?

  首先,Playwright同样适用于多浏览器、多语言,这样对于准备过渡到这个工具的用户是非常友好的。

  其次,Playwright可以使用基于css、xpath、text这些常用的元素定位方式进行录制生成代码,能大幅度的减少写代码的时间,同时代码稳定性也可以保证。

  再有就是playwright使用api方式操作浏览器内核,速度快,而且可以和浏览器双向沟通,元素操作可以在元素ready的情况下进行,稳定性很好。

  最后,支持UI和非UI方式运行,节省了debug、 run时间。

  好处多多,可是又有人望而却步了,毕竟我们之前那么多的测试代码都是基于Selenium的, 完全切换到Playwright的成本不可想象。别担心,我们是可以同时使用Selenium和Playwright的。

  怎么做呢?我这里以python为例:

  Playwright和Selenium可以基于不同的Python Package, 因为他们都能很好的与pytest测试框架集成,所以只需要单独封装setup / teardown methods即可。

  结构:

1.png


  For Selenium:

1-1.png

  For Playwright:

1-2.png

  Test cases:

  Playwright test case

1-3.png

  Selenium test case

1-4.png

  Running Cases:

1-5.png

  这样,我们既可以保留之前基于Selenium写的case和方法,还可以单独添加新的基于Playwright cases、methods,是不是很棒呢?

  之后有新的想法和学习成果,会随时和大家沟通。让我们一起探索Playwright给我们UI自动化带来的更多可能性吧。


作者:Learning Bird   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 需求:读取本地存放图片的地址,实现随机选取图片转化为base64图片流问题出现的环境背景:工作中模型接口的传入为图片base64,在使用jmeter进行相关接口测试时需要有该功能函数。开发步骤:1、创建java项目,新建的包名称必须时org.apache.jmeter.functions,在该包下创建名为ImageToBase64的class2、导入jmeter安装目录下的lib\ext下的ApacheJMeter_functions.jar包3、继承AbstractFunction类,并重写其中的方法package org.apache.jmeter.functions; imp...
            2 0 2537
            分享
          •   手工测试做了好多年,点点点···成了每天必须做的事情。但是随着自动化测试趋势的日渐明显,以及受到薪资、技能的双重考验,掌握自动化测试成为了必备技能。  手工转自动化测试,不是一蹴而就的。“预先善其事,必先利其器”,凡事之前都需要一个良好的准备,自动化测试何尝不是呢?  在测试行业,一个一直被讨论的问题就是:手工测试没有前途,自动化测试会取代手工测试?  如今随着软件需求的变化比以往任何时候都快,越来越多的企业正在采用敏捷方法来缩短开发周期并加快上市时间(TTM)。  在这个瞬息万变的技术环境中,应用程序质量比以往任何时候都更重要,手动测试似乎既耗时又重复,并且容易出现人为错误。  从手动测...
            0 0 1132
            分享
          •   摘要  在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解,什么是IO?什么是NIO?什么是AIO?要了解这些,首先要了解同步、异步、阻塞、非阻塞,然后将其结合起来,了解IO、NIO、AIO就容易多了。  正文  同步与异步(synchronous/asynchronous):同步是一种可靠的有序运行机制,当我们进行同步操作时,后续的任务是等待当前调用返回,才会进行下一步;而异步则相反,其他任务不需要等待当前调用返回,通常依靠事件、回调等机制来实现任务间次序关系。  同步/异步:数据如果尚未就绪,是否需要等待数据结果。  阻塞/非阻塞:进程/线程需要操作的数据如果尚未就绪,是...
            0 0 1171
            分享
          •   五一假期刚刚结束,大家都度过了疫情以来难得的休闲假期,但因大风天气频发,部分高铁线路出现线路悬挂异物,导致部分火车晚点运行,进而引起北京西站出现了大量旅客滞留的情况,引发了大家的关注。对于火车晚点,大家都能理解,但对于北京西站的处理方式和应急做法,民众就不见得理解了,大风刮飞地膜的事件不容易出,但相应的应急措施也需要预先想好。通过这个事件,联想起我们软件测试行业,哪些过程和活动是咱们需要提前想好应急措施的呢。  那么就跟着我来一起梳理梳理,那些可以提前想到的“地膜”事件,以及我们能够想到的应急措施,防止出现软件测试领域的“旅客滞留”现象。  拿一个传统的瀑布模型的信息系统来说,软件系统的生...
            11 12 1666
            分享
          •   如果您的网站在用户访问时的加载时间需要很久,那么,这篇文章兴许能为您的优化工作带来一些启发。不过即便没能帮您解决你的问题,您也能了解到影响了网站加载时间的几种常见错误是什么。  为什么页面加载时间这个指标很重要?  页面的加载时间直接影响到了用户对网站性能的直观感受。有调研数据表示,  一旦页面加载时长超过3秒,那么将会有一半的访问用户在等待中而流失。  · 搜索引擎排名 — 页面加载时间是搜索引擎在搜索结果中对你的网站进行排名的重要依据之一。因此,网页的加载时间会影响用户在Web上查找该网页的难易程度。  · 转化率 — 页面加载越快,用户的参与度就越高。网站速度慢,显而易见地会导致转化...
            0 0 2104
            分享
      • 51testing软件测试圈微信