• 12
  • 12
分享
  • 相比Selenium,Playwright好用在哪里?——软件测试圈
  • 曼倩诙谐 2021-04-16 10:24:13 字数 1515 阅读 4109 收藏 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软件测试网原创

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   一、背景介绍  IT系统的性能测试与优化是一项复杂、富有挑战性的工作,它主要通过某些特定的方式、按照一定的策略,对被测试的系统进行施压,获取该系统的响应时间、运行效率、资源利用情况等指标,来评价系统是否满足用户性能需要。其中,重要的环节之一就是监控系统的运行状况,实时查看CPU,内存等系统资源数据,并做好记录情况,以便定位系统瓶颈问题,找到系统性能优化方向。  伴随着业务和技术的快速发展,部署IT系统的环境资源类型和数量日益增多,如何便捷的将系统环境各项资源的使用情况记录保存到本地,以便于后续的对比分析,是目前测试人员在日常工作中需要面对的问题。  本文采用Selenium We...
            15 15 1247
            分享
          • 前提条件:Jmeter已安装且已配置好;运行Jmeter,打开界面。第一步,添加线程组在Jemeter界面上有一个默认的测试计划根路径。一个测试计划包含一系列Jmeter运行时要执行的步骤,包含一个或者多个线程组,逻辑控制器,取样发生控制,监听器,定时器,断言和配置元件等。我们想要创建一个完整的测试计划,那么就先创建一个线程组:选中测试计划,点击鼠标右键-> 添加->线程(用户)->线程组,如下图所示:线程组元件是任何测试计划的起点。一个测试计划的所有元件必须在一个线程组下。线程组元件控制JMeter运行测试时使用的线程数。线程组管理可以:设置线程数设置ramp-up per...
            0 0 5112
            分享
          •   字节跳动员工李蓓最近颇感不安,担心随时被裁的焦虑情绪一直笼罩着她。  最近,她眼睁睁看着同事们一个一个地被裁离开了公司。就在一个月前,她也接到了公司的PIP(绩效管理提升计划)。该计划主要针对绩效考核未达标的员工,根据以往的经验,接到PIP就意味着离被辞退不远了,因为鲜有人能顺利完成这项计划。  据了解,字节跳动内部每年有两次考核,一般为3月和9月,考核方式借鉴Google的OKR+360模式,公司内部考核一共有八级,从低到高为F、I、M-、M、M+、E、E+、O,按比例分布,对应年终奖和月薪百分比的涨幅。  事实上,大厂每到年底都会有所谓的人员优化措施,但这一次,让李蓓倍感焦虑的原因在于...
            0 0 929
            分享
          •   前言  在使用Selenium过程中,目前比较流行的两种框架分别是Unittest和Pytest,之前一直使用Unittest框架,在查阅一些资料的时候发现大部分人在使用Pytest框架,心中不免产生疑惑这两种框架具体区别在什么地方呢,于是花半天时间整理一下具体的区别。  下面以某软件登录功能为例查看一下具体区别:  功能实现用例  源文件:  1.login.pyfrom selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support ...
            13 13 2320
            分享
          •   很多对软件测试行业感兴趣的小伙伴,都听说过兼容性测试,但却不太理解兼容性测试是干啥的。除了我们日常经常听到的手机版本兼容,游戏升级迭代,其实兼容性测试还包括很多其他方面。今天,我们就一起来盘一盘什么是兼容性测试吧~  什么是兼容性测试?  我们先来想一下,什么叫兼容。也就是说放在不一样的载体,或者不一样的环境里,这个程序都必须能正常运转,这个叫兼容。所以,也就不难理解什么叫兼容性测试了吧~  根据度娘官方的解释:软件兼容性测试是指,检查软件之间能否正确地进行交互和共享信息。  随着用户对来自各种类型软件之间共享数据的能力,和充分利用空间同时执行多个程序能力的要求,测试软件之间能否协作变得越...
            0 0 1046
            分享
      • 51testing软件测试圈微信