自动化工具 Chrome Recorder —— 谷歌官方网页自动化神器?

恒温 · 2021年11月16日 · 最后由 alwans 回复于 2021年12月08日 · 4016 次阅读

原文来自:https://www.yuque.com/hengwenzhangdamao/weagvh/kuw84c

某君在 TesterHome 社区发了一贴,说 Recorder 要失业了?(不知道为啥要发到匿名贴)就想起以前谷歌推出的各种各样的工具,每次出来都说某某要被干掉了,比如 AgularJs,我现在几乎已经听不到它的声音,谷歌还做很多其他的东西,都死了。有兴趣的同学可以看看《这座 “坟墓” 埋葬着谷歌那些年死去的产品》。

当然,这个 Recorder 还是值得研究下的。英文好的可以直接移步官方文档——《Record, replay and measure user flows》。那想体验下的同学,可以跟着我 step by step 来玩一把!

下载 Chrome 97

因为目前最新的正式版是 96,所以我们必须去下载开发者版本、尝鲜版或者探索者版(金丝雀)。那我自己是下载的金丝雀。直接去官方下载吧,https://www.google.com/intl/zh-CN/chrome/

找到 Recorder

打开 ChromeDevTools,

在最右侧找到 Recorder,看到有个烧杯的标签,说明是试用功能!

开始录制用户流程

点击 Start new recording 即可,然后你可以去网页上操作,直接看官方的小视频吧,和自己操作一模一样。
/

回放用户流程

直接点击 Replay 即可,
/

是不是非常的方便?

在回放的时候,还可以选择速度,这个不是就是弱网自动化么?(下面是录制在社区搜索自动化测试 user flow)

页面性能测试

在回放的过程中,还可以获取页面的性能数据。点击 Measure Performance。
/

在社区搜索自动化测试 user flow 的性能数据,这个怎么分析可以参考《https://segmentfault.com/a/1190000023272526

编辑用户流程

添加多条用户流程,Recorder 是可以支持多条用户流程的。可惜不支持一起执行。

你也可以导出脚本,脚本是使用Puppeteer写的,方便你后续编辑。所以感觉以后的自动化就可以先用 Recorder 录制,录制完之后,导出 puppeteer 脚本,然后进行修改,最后大规模使用。

编辑用户流程的步骤

在用户流程里的每一个点,都是一个步骤,我们可以在前后加入新的步骤。我们来解读下第一步和第二步的意思:

第一步

type: naviagte 表示打开网页,然后 url 是 testerhome.com。断言(asserted)里面判断了 type,url 和 title。

第二步

type: click 表示点击,然后 target 表示主页。这里有两个选择器,这是 Recorder 默认的,如果通过第一个选择器能找到,第二个就不用了。offset 就是点击的坐标了。

这里的 type 还有 waitForElement 这种(应该还有很多其他的,但是没有文档)。

总结

总体来看,这个工具还是很不错的,目前文档还是比较缺失,同时功能也比较简陋,比如缺少基本的单步调试,不能多用户流程串行或者并行跑等等,期待正式版出来有更多好用的功能。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 11 条回复 时间 点赞
1楼 已删除

感觉并没有比 selenium 更强大,而且不适合二次开发

薄荷可乐 回复

和 selenium 就不是同一个类型的东西。

感觉很适用于临时性重复工作的场景。

复现 bug 的时候很好用 就和 4 楼说的一样 临时重复性场景 应该会很好用

粗略看一眼,和 selenium 那个早期录制插件差不多功能,但是我觉得,毕竟这只是试用版,第一期而已。后面人家一定会越来越 nb,而且是自家的功能,肯定慢慢会有 selenium 没有的亮点,甚至干脆屏蔽 selenium 竞争对手? 有望能解决 selenium 特征码导致滑动拼图不好使的情况。

如果还是基于 DOM 的 估计不太能有太大区别
但是如果可以操作系统这种级别的事件能开放出来 那还是非常吸引人的!

这和插件市场的自动化工具没什么差别,并且插件也都能实现。以后就是集成方便些。

自动化 ui 还是考虑报告和流水线,并发执行等。

这个适合生成测试脚本等。

期待以后功能更强大

我现在用的是微软的 playwright,然后给他包装了一些基建,还不错,主要看重速度比 selenium 快几倍和兼容能力强大。

if __name__ == '__main__':
    idx = 1
    """
    1.日志基建⭐⭐⭐:日志会生成前端可做报告的Json,还包含截图快照,堆栈处理,多个web端交互共用调用链功能
    2.simple_report:会读取解析文件.py 特征结尾就是文件/文件件中 case数量和最终日志基建功能做解析。
    3.反复执行⭐:跑满所有的case(simple_report里面跑满case会提供MetisConfig.REPLAY=False)或者执行到3次停止
    4.convert_json⭐:包含自动抓包har然后转Json。
   1,2,3是一环扣一环的。
    """
    while MetisConfig.REPLAY:
        start_playwright_suite("xxx")
        convert_util.convert_json("xxx")
        simple_report("./test_case_xxx/client_xxx.py","./log/xxx.log")
        if idx >= 3:
            break
        idx += 1
    pprint(MetisConfig.REPORT)
陈子昂 回复
PS C:\Users\ixixi\Desktop\Practice\2021\Python\DailyPractice> python -m playwright codegen --target python -o 'm
y.py' -b chromium https://www.baidu.com
����: �޷���ֹ PID 32088 (���� PID 15140 �ӽ��)�Ľ�̡�
ԭ��: û�д������ʵ�������С�
����: �޷���ֹ PID 15140 (���� PID 32860 �ӽ��)�Ľ�̡�
ԭ��: û�д������ʵ�������С�
����: �޷���ֹ PID 26520 (���� PID 32860 �ӽ��)�Ľ�̡�
ԭ��: û�д������ʵ�������С�
����: �޷���ֹ PID 33984 (���� PID 32860 �ӽ��)�Ľ�̡�
ԭ��: û�д������ʵ�������С�
����: �޷���ֹ PID 28872 (���� PID 32860 �ӽ��)�Ľ�̡�
ԭ��: û�д������ʵ�������С�
����: �޷���ֹ PID 6900 (���� PID 32860 �ӽ��)�Ľ�̡�
ԭ��: û�д������ʵ�������С�
����: �޷���ֹ PID 32860 (���� PID 16016 �ӽ��)�Ľ�̡�
ԭ��: û�д������ʵ�������С�
终止批处理操作吗(Y/N)? y
Traceback (most recent call last):
  File "D:\Language\Python\Python3.8\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "D:\Language\Python\Python3.8\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\ixixi\Desktop\Practice\2021\Python\DailyPractice\venv\lib\site-packages\playwright\__main__.py"
, line 31, in <module>
    main()
  File "C:\Users\ixixi\Desktop\Practice\2021\Python\DailyPractice\venv\lib\site-packages\playwright\__main__.py"
, line 26, in main
    completed_process = subprocess.run([str(driver_executable), *sys.argv[1:]], env=env)
  File "D:\Language\Python\Python3.8\lib\subprocess.py", line 491, in run
    stdout, stderr = process.communicate(input, timeout=timeout)
  File "D:\Language\Python\Python3.8\lib\subprocess.py", line 1016, in communicate
    self.wait()
  File "D:\Language\Python\Python3.8\lib\subprocess.py", line 1079, in wait
    return self._wait(timeout=timeout)
  File "D:\Language\Python\Python3.8\lib\subprocess.py", line 1357, in _wait
    result = _winapi.WaitForSingleObject(self._handle,
KeyboardInterrupt

猫哥,我试了试这个工具,然后录制起来的时候,直接就报错了,有空帮忙看下什么情况么?

Playwright 确实香

13楼 已删除
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册