5分钟快速体验Midscene.js(Node环境、Playwright)

5分钟快速体验Midscene.js

什么是Midscene.js

Midscene.js 是一款 AI 驱动的 UI 自动化工具,核心定位是通过人工智能简化网页 / UI 交互、数据提取与结果验证的流程,让开发者无需复杂编码即可实现自动化操作,同时支持灵活集成与高效调试,适用于网页自动化测试、数据爬取、重复操作脚本编写等场景。

环境准备

  1. 创建项目目录
bash 复制代码
mkdir demos-for-midsence.js && cd demos-for-midsence.js
  1. 本次通过集成Playwright方式体验,安装依赖
bash 复制代码
# 想用哪个用哪个
npm install @midscene/web playwright @playwright/test dotenv tsx --save-dev
pnpm add @midscene/web playwright @playwright/test dotenv tsx --save-dev
yarn add @midscene/web playwright @playwright/test dotenv tsx --save-dev

编写demo

  1. 引用 dotenv 库配置环境变量
    Midscene.js会调用模型,所以需要从环境变量读取模型信息。由于Midscene.js是视觉模型驱动的,所以需要配置视觉模型,本示例使用阿里百炼的qwen2.5-vl。已在上一步依赖安装时引入了dotenv,现在在项目的根目录下创建一个.env文件,并配置以下内容:
bash 复制代码
# .env
MIDSCENE_MODEL_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
MIDSCENE_MODEL_API_KEY="你的APIKEY"
MIDSCENE_MODEL_NAME="qwen-vl-max-latest"
MIDSCENE_MODEL_FAMILY="qwen2.5-vl"
  1. 编写脚本
    在项目根目录下创建一个demo.ts
typescript 复制代码
import { chromium } from 'playwright';
import { PlaywrightAgent } from '@midscene/web/playwright';
import 'dotenv/config';

const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms));

Promise.resolve(
  (async () => {
    const browser = await chromium.launch({
      headless: true, 
      args: ['--no-sandbox', '--disable-setuid-sandbox'],
    });

    const page = await browser.newPage();
    await page.setViewportSize({
      width: 1280,
      height: 768,
    });
    await page.goto('https://www.bilibili.com');
    await sleep(1000);
    const agent = new PlaywrightAgent(page);

    await agent.aiAct('搜索框输入 "欧洲十大最佳旅行目的地", 回车');

    await agent.aiWaitFor('页面上至少1个搜索结果');

    const items = await agent.aiQuery(
      '{itemTitle: string, author: string}[], 在搜索结果的第一页中查找标题及其对应的作者',
    );
    console.log('输出结果', items);
    await browser.close();
  })(),
);

运行

bash 复制代码
npx tsx demo.ts

运行完成后项目目录下生成midscene_run文件夹,报告则位于midscene_run/report下的html

相关推荐
gis开发之家19 分钟前
《Vue3 从入门到大神50篇》Vue3 源码详解(二十):生命周期钩子源码解析 —— onMounted / onUpdated 如何实现?
前端·javascript·前端框架·vue3·vue3源码
全栈项目管理程序猿21 分钟前
ArcGIS JS 基础教程(9):天空盒与大气效果
javascript
平凡的阿泽39 分钟前
我用TRAE Work手搓了一个「谁是卧底」小游戏
前端·javascript
Highcharts41 分钟前
Highcharts 实战:基于 Gauge 仪表盘打造实时动态时钟可视化开发全解析
javascript·数据可视化
运维行者_41 分钟前
企业带宽监控工具实战:网络流量分析与异常排查的5个关键能力
运维·服务器·开发语言·网络·分布式·后端·php
Patrick在香港43 分钟前
Python爬虫框架实战:优雅抓取香港政府公开API数据的通用方案
java·开发语言·爬虫·python·ai编程·数据可视化·可用性测试
嘟嘟07171 小时前
用单例模式管理弹窗:从一段原生 JS 理解 Singlet
前端·javascript·代码规范
hey_sml1 小时前
MySQL常用操作速记:从字符集到游标全解析
java·开发语言·mysql
广东程序猿小展1 小时前
《007初露锋芒》风灵月影13项修改器下载 007初露锋芒修改器使用方法
开发语言·javascript·ecmascript
用户6919026813391 小时前
Harness工程的概念,以及简单的代码示例
javascript·架构