首页 > 编程语言 >python+playwright 学习-54 结合 gremlins.js 实现web 网页的mokey测试

python+playwright 学习-54 结合 gremlins.js 实现web 网页的mokey测试

时间:2023-04-20 11:23:22浏览次数:42  
标签:web playwright gremlin python gremlins js 测试 page

前言

在 Android 应用测试里面有个 mokey测试可以对app 做稳定性的测试,在app里面随机乱点发送一些事件,看app会不会异常。
这种做法,也称为 Monkey测试 或 Fuzz 测试,在移动应用程序开发中非常常见。

Gremlins.js 模拟随机用户操作:gremlins 单击窗口中的任意位置,在表格中输入随机数据,或者鼠标在页面上任意位置乱点,让 JavaScript 错误,或使程序失败。
如果gremlins不能破坏应用程序,恭喜!该应用程序足够健康,可以发布给真正实用的用户。

基本使用

gremlins horde是一支专业的gremlins军队,随时准备搞砸您的应用程序。释放gremlins开始压力测试:

const horde = gremlins.createHorde();
horde.unleash();
// gremlins will act randomly, at 10 ms interval, 1000 times

gremlins.js提供了几种gremlin种类:一些点击页面上的任何地方,其他的在表格输入中输入数据,其他的在每个可能的方向滚动窗口,等等。

您将在屏幕上和控制台日志中看到gremlins操作的痕迹(它们会留下红色痕迹):

gremlin formFiller input 5 in <input type=​"number" name=​"age">​
gremlin formFiller input [email protected] in <input type=​"email" name=​"email">​
gremlin clicker    click at 1219 301
gremlin scroller   scroll to 100 25
...

详细文档https://github.com/marmelab/gremlins.js

playwright 运行 gremlin.js

要使用playwright运行gremlin.js,您可以将其作为初始脚本加载。

const { test } = require('@playwright/test');

test('run gremlins.js', async ({ page }) => {
    await page.addInitScript({
        path: './node_modules/gremlins.js/dist/gremlins.min.js',
    });
    await page.goto('https://playwright.dev');
    await page.evaluate(() => gremlins.createHorde().unleash());
});

python 对应的脚本, 需下载gremlins.min.js 放到本地代码目录

from playwright.sync_api import sync_playwright


with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context(record_video_dir="videos/")  # 创建上下文,浏览器实例1

    page = context.new_page()  # 打开标签页
    # 初始化,加载js
    page.add_init_script(path='./gremlins.min.js')
    page.goto("http://47.108.155.10/login.html")
    page.wait_for_load_state("networkidle")
    # 执行脚本
    page.evaluate("gremlins.createHorde().unleash()")
    page.close()

运行后,你会看到页面上发生的随机事件

标签:web,playwright,gremlin,python,gremlins,js,测试,page
From: https://www.cnblogs.com/yoyoketang/p/17336130.html

相关文章

  • 使用Fiddler抓取WebSockets协议包
    背景服务端通过SignalR用WebSockets通讯方式,与显示屏进行交互,除了显示屏软件上日志入口,也能通过抓包抓取对应报文。同时,可通过工具模拟与显示屏软件推送信息。那HTTP和WebSocket有什么区别呢?引用网友写的描述HTTP建立在TCP协议基础上而WebSocket通常建立在TCP上,也说明了为什......
  • PHP Web实现文件上传下载功能实例解析
    ​ 一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。HTTP协议本身不支持断点上传,需要自己实现。 二、Range  用于请求头......
  • Web 下载文件名乱码解决以及多浏览器兼容方案
    在web开发中,经常我们会遇到如导出或者下载网页这种需求,但是往往会遇到在chrome浏览器下载的文件名正常,但是到firefox,Safari上却乱码的情况,经过网上的资料多次研究,最终总结出了如下的方法,代码如下:///<summary>///浏览器下载文件,完整文件下载,不支持分片下载,为了兼容safari,下......
  • 手把手逐步解析Javaweb登录实例
    一、编写前端界面<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</titl......
  • PYTHON TXT 去空行
    withopen('file.txt','r')asf:lines=f.readlines()withopen('file.txt','w')asf:forlineinlines:ifline.strip():f.write(line)首先,我们使用`open()`函数打开文件,并使用`readlines()`方法读取文件中的所有......
  • python pyautogui检测鼠标点击事件
    目录pythonpyautogui检测鼠标点击事件pythonpyautogui检测鼠标点击事件在Python中,可以使用pyautogui模块来检测鼠标的点击事件,并判断左键或右键。下面是一个示例代码,可以检测鼠标的点击事件,并根据左键或右键输出不同的信息:pythonCopyimportpyautoguiwhileTrue:tr......
  • Python数据挖掘之关联规则学习
    一、关联算法应用介绍关联规则分析是数据挖掘中最活跃的研究方法之一,目的是在一个数据集中找出各项之间的关联关系,而这种关系并没有在数据中直接表示出来。常见于与购物篮分析。常用关联算法表如下,简单理解的话,就是测算某几项东西一起出现的概率。比如:如果测算得出,大量订单中出......
  • python3 猜数字小游戏
    Guess_the_Number.pyimportrandom......
  • python接口自动化
    #coding=utf-8'''python中常用的做接口自动化测试的库有哪些?requests、urllib、urllib3、httplibrequests是开源免费的,应用最多的一个库'''#importrequests#创建接口请求三种方法#r=requests.post(url=url,data=data,json=json)#r=requests.request('psot',url=url......
  • python接口自动化2关联接口
    #coding=utf-8"""===================================深圳多测师信息技术有限公司作者:多测师-小程日期:2023年03月30日==================================="""#关联接口:上一个接口的返回参数作为下一个接口的入参#importrequests#importre#classProvince():......