在我用 playwright 作为内核,做 UI 自动化测试平台时,了解到 playwright 有两种方式调用:同步和异步 但是,同步不就已经能满足我们的日常测试了吗?为什么会出现异步调用的方式?有没有大神可以讲解一下,并列举一下使用场景
异步和 ui 自动化没有关系,异步是你自己写用例时候,要考虑的。比如你想下载个东西,异步去调用,点了下载就不管了,可以继续执行别的东西。
这种问题百度必应谷歌一大把答案吧。
简单来说,我们把代码执行看成是一条时间线(我这样比喻是不贴切计算机底层实际运行的,但是就这个问题入门级可以这么理解),它是有先后顺序的。
按我们最开始学编程时的思维,代码就是一行一行往下执行,它的执行顺序可以通过人眼看代码完全判断出来现在跑到哪里。但是一行一行执行代码,有些工作是阻塞性的,比如执行一行读取磁盘、网络请求的代码,要到秒级的耗时。这时如果没有其他实现方式,代码就会阻塞,我们只能等待其完成,这显然是不合理的。
为什么不合理?想想你在烧水的时候,会傻傻的站在水壶前哪里也不去等着水沸腾吗?肯定不会,你会在这段时间里去做其他事,同时
为什么会出现异步?应该解释清楚了,没有异步就只能各种同步或阻塞,效率低下,CPU 大量空转。
使用场景:你调用一个接口,这个接口要处理 10s 之后才会返回,怎么应用异步?
你对异步的解释的很好,感谢。 但是 playwright 作为 UI 自动化工具,在我产品的日常工作中,并不需要做这些异步等待,和我们操作浏览器一样,所有操作是有先后顺序的;所以不知道有哪些场景需要等待,所以问这个问题;如果可以的话,请像一楼那样说一下你碰到过的使用场景,谢谢
直观例子:
非直观例子:
我之前用 selenium 进行自动化测试,当用例数量过多 (同步) 一条一条执行很耗费时间,所以用 playwright 异步,直接异步执行所有测试用例,优化执行时间,并且 playwright 的智能等待、浏览器驱动也不错