现场写一个脚本,识别屏幕点击“传输文件”,如果没有则先解锁手机(无密码,从下往上滑)再识别一次,如果还是没有则从桌面浏览,右往左滑动共5次,每划一次识别一次“hamibot”字样,识别到了就点击,等待5秒启动,然后识别“前往控制台”识别到了就点击,等待10秒加载,识别“脚本”点击,识别“运行”点击,等待10秒,点击约屏幕右下方上面一点左边一点的,然后结束脚本
刚才我使用这段话你生成的代码没有执行任何操作,刚运行就结束了

HAMI_2777960300 · 3 小时前

回答

Hamibot AI
1
· 3 小时前

根据你的描述,我将为你编写一个符合要求的脚本。以下是完整的代码:

// 文档地址 https://docs.hamibot.com/
// 引入仿真滑动函数
function getBezierPath(p1, p2, p3, p4, times) {
    function Point2D(x, y) {
        this.x = x || 0.0;
        this.y = y || 0.0;
    }
    function PointOnCubicBezier(cp, t) {
        var ax, bx, cx;
        var ay, by, cy;
        var tSquared, tCubed;
        var result = new Point2D();
        cx = 3.0 * (cp[1].x - cp[0].x);
        bx = 3.0 * (cp[2].x - cp[1].x) - cx;
        ax = cp[3].x - cp[0].x - cx - bx;
        cy = 3.0 * (cp[1].y - cp[0].y);
        by = 3.0 * (cp[2].y - cp[1].y) - cy;
        ay = cp[3].y - cp[0].y - cy - by;
        tSquared = t * t;
        tCubed = tSquared * t;
        result.x = ax * tCubed + bx * tSquared + cx * t + cp[0].x;
        result.y = ay * tCubed + by * tSquared + cy * t + cp[0].y;
        return result;
    }
    function ComputeBezier(cp, numberOfPoints, curve) {
        var dt;
        var i;
        dt = 1.0 / (numberOfPoints - 1);
        for (i = 0; i < numberOfPoints; i++) {
            curve[i] = PointOnCubicBezier(cp, i * dt);
        }
    }
    var cp = [
        new Point2D(parseInt(p4[0]), parseInt(p4[1])),
        new Point2D(p2[0], p2[1]),
        new Point2D(p3[0], p3[1]),
        new Point2D(p1[0], p1[1]),
    ];
    var numberOfPoints = times;
    var curve = [];
    ComputeBezier(cp, numberOfPoints, curve);
    return curve;
}
// 从 下往上滑动
function swipeTop(dw, dh, duration) {
    if (!(typeof duration === 'number' && !isNaN(duration) && duration > 0)) {
        duration = 400;
    }
    let grid = Math.round(dw * 0.1);
    let xStart = Math.round(dw * 0.3);
    let xEnd = Math.round(dw * 0.7);
    let yStart = Math.round(dh * 0.25);
    let yEnd = Math.round(dh * 0.85);
    let start = [random(xStart, xEnd), random(yEnd + grid / 2, yEnd - grid / 2)];
    let end = [random(xStart, xEnd), random(yStart, yStart + grid / 2)];
    let ctl1 = null;
    let ctl2 = null;
    let sign = Math.round(Math.random());
    if (sign === 0) {
        ctl1 = [end[0] - random(grid, grid * 2), end[1] - random(0, grid)];
        ctl2 = [end[0] + random(grid, grid * 2), end[1] + random(0, grid)];
    } else {
        ctl1 = [end[0] + random(grid, grid * 2), end[1] + random(0, grid)];
        ctl2 = [end[0] - random(grid, grid * 2), end[1] - random(0, grid)];
    }
    let path = getBezierPath(end, ctl1, ctl2, start, 100);
    let parms = [duration];
    for (let i = 0; i < path.length; i++) {
        let { x, y } = path[i];
        parms.push([x, y]);
    }
    gesture.apply(null, parms);
}
// 主函数
function main() {
    // 检查是否点击“传输文件”
    var element = findElement("传输文件");
    if (element) {
        click(element);
    } else {
        // 没有找到“传输文件”,先解锁手机
        swipeTop(device.width, device.height);
        // 再次检查“传输文件”
        element = findElement("传输文件");
        if (element) {
            click(element);
        } else {
            // 
ℹ️ 本回答由 AI 生成,内容仅供参考