上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

写入文本失败但控制台输入没问题有时间限制

[复制链接]

该用户从未签到

7

主题

24

帖子

31

积分

助理工程师

Rank: 1

积分
31

中秋纪念章国庆纪念章

发表于 2021-11-29 21:37:56 | 显示全部楼层 | 阅读模式
3油猫币
写入文本失败但控制台输入没问题,有时间限制就是运行到最后几步gg了,搞了半天不行,新手学习
网址 https://qpanpan.com/账号123456
密码+Jp123456

// ==UserScript==
// @name         冰火信息编辑
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://qpanpan.com/*
// @icon         https://www.google.com/s2/favicons?domain=mozilla.org
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
     setTimeout(() => {
        //1.商品名称
        setTimeout(() => {
            var aq = document.querySelectorAll(".el-input__inner");
            const evt = new Event('input');
            aq[1].value = "商品名称";
            aq[1].dispatchEvent(evt);
        }, 200)

        //2.商品分类
        setTimeout(() => {
            const select1 = document.querySelector(
                '#basicGoods .el-form-item:nth-child(3) .el-col:nth-child(1) .el-select-dropdown'
            ); //一级分类
            const select2 = document.querySelector(
                '#basicGoods .el-form-item:nth-child(3) .el-col:nth-child(2) .el-select-dropdown'
            ); //二级分类
            select1.querySelector('.el-select-dropdown__item:nth-child(5)').click();
            //这里要加一个延时,因为点击“卫衣”后才会出现“李宁卫衣”的选项
            setTimeout(() => {
                select2.querySelector('.el-select-dropdown__item').click();
            }, 200);
        }, 400)
        //3.商品单位
        setTimeout(() => {
            var aq = document.querySelectorAll(".el-input__inner");
            const evt = new Event('input');
            aq[5].value = "商品单位";
            aq[5].dispatchEvent(evt);
        }, 800)

        //4.第三方销量
        setTimeout(() => {
            var aq = document.querySelectorAll(".el-input__inner");
            const evt = new Event('input');
            aq[13].value = "100"; //第三方销量
            aq[13].dispatchEvent(evt);
        }, 1000)

        //5.库存
        setTimeout(() => {
            var aq = document.querySelectorAll(".el-input__inner");
            const evt = new Event('input');
            aq[14].value = "100"; //库存
            aq[14].dispatchEvent(evt);
        }, 1200)

        setTimeout(() => {

            //商品规格页面跳转********************************************************************************************************
            var qq1 = document.querySelectorAll("div");
            qq1[38].click();
        }, 2000)
        setTimeout(() => {
            //整理商品规格页面运行
            //1.开启商品规格
            var aq = document.querySelectorAll(".el-input__inner");
            var qq1 = document.querySelector(".option-box input[type=checkbox]");
            qq1.click();
        }, 2200)

        //2.添加规格项
        setTimeout(() => {
            var qq2 = document.querySelector(
                ".goods-spec_info_form-item .el-popover__reference");
            qq2.click();
        }, 2400);

        //3.输入规格项名
        setTimeout(() => {
            var aq = document.querySelectorAll(".el-input__inner");
            for (let i = 0; i < aq.length; i++) {
                if (i == 52) {
                    const evt = new Event('input');
                    aq[i].value = "颜色"; //商品规格
                    aq[i].dispatchEvent(evt);
                }
            }
        }, 2600);

        //4.输入规格项名确定按钮
        setTimeout(() => {
            var qq = document.querySelectorAll("button[type=button]");
            qq[83].click();
        }, 2800);

        //5.填写第一个规格值
        setTimeout(() => {
            var aq = document.querySelectorAll(".el-input__inner");
            const evtt = new Event('input');
            aq[17].value = "黑色"; //第一个规格值
            aq[17].dispatchEvent(evtt);
        }, 3000);

        //6.添加规格值按钮·来添加第二个规格
        setTimeout(() => {
            var qq3 = document.querySelector(
                ".goods-spec_info_form-content button[type=button]");
            qq3.click();
        }, 3200);

        //7.输入第二个值

        setTimeout(() => {
            //  var aq = document.querySelectorAll(".el-input__inner");
            var aq = document.querySelectorAll(".el-input__inner");
            const evtt = new Event('input');
            aq[18].value = "白色"; //第二个规格值
            aq[18].dispatchEvent(evtt);
        }, 3400);

        //8.添加第二个规格项
        setTimeout(() => {
            var qq4 = document.querySelector(
                ".goods-spec_info_form-item .el-popover__reference");
            qq4.click();
        }, 3600);

        //9.输入规格项名*****

        setTimeout(() => {

            var aqq = document.querySelectorAll(".el-input__inner");
            const evtt = new Event('input');
            aqq[73].value = "尺寸"; //第二个规格值
            aqq[73].dispatchEvent(evtt);
        }, 5800);

        //10.输入规格项名确定按钮
        setTimeout(() => {
            var qq5 = document.querySelectorAll("button[type=button]");
            qq5[84].click();
        }, 7000);

        //11.填写第二个规格项的第一个规格值
        setTimeout(() => {
            var aq = document.querySelectorAll(".el-input__inner");
            const evtt = new Event('input');
            aq[20].value = "M"; //因为第二个规格项占了一个19值,所以+1成了20
            aq[20].dispatchEvent(evtt);
        }, 7200);

        //12.添加规格值按钮
        setTimeout(() => {
            var qq6 = document.querySelectorAll(
                ".goods-spec_info_form-content button[type=button]");
            qq6[1].click();
        }, 7400);

        //13输入第二个规格值
        setTimeout(() => {
            var aq = document.querySelectorAll(".el-input__inner");
            const evtt = new Event('input');
            aq[21].value = "L"; //第二个规格值
            aq[21].dispatchEvent(evtt);
        }, 7600);

        //12.添加规格值按钮
        setTimeout(() => {
            var qq7 = document.querySelectorAll(
                ".goods-spec_info_form-content button[type=button]");
            qq7[1].click();
        }, 7800);

        //13输入第二个规格值
        setTimeout(() => {
            var aq = document.querySelectorAll(".el-input__inner");
            const evtt = new Event('input');
            aq[22].value = "XL"; //第二个规格值
            aq[22].dispatchEvent(evtt);

        }, 8000);
         //设置库存
        setTimeout(() => {

            var qq1 = document.querySelectorAll(".el-popover__reference");
            qq1[1].click(); //1是分组 3是市场价格  4是现价
        }, 8200)

        //库存值 113
        setTimeout(() => {
            var aq = document.querySelectorAll(".el-input__inner");
            const evt = new Event('input');
            aq[113].value = "100";
            aq[113].dispatchEvent(evt);
            //**************************************
        }, 10400);

        setTimeout(() => {
            //确定库存按钮
            var qq1 = document.querySelectorAll(".el-button--primary");
            //  alert(qq1.length);    3上传图片 5设置市场价格  6设置现价  8商品编码  9商品条码 10重量  11体积  12清空所有  14保存?   16库存
            qq1[13].click();
        },14600);


        setTimeout(() => {
            //设置现价
            var qq1 = document.querySelectorAll(".el-popover__reference");
            qq1[4].click();
        },14800);


        setTimeout(() => {
            //现价值
            var aq = document.querySelectorAll(".el-input__inner");
            const evt = new Event('input');
            aq[113].value = "100";
            aq[113].dispatchEvent(evt);
        }, 16000);


        setTimeout(() => {
            //确定现价按钮
            var qq1 = document.querySelectorAll(".el-button--primary");
            qq1[13].click();
        }, 16200);
    }, 5000);
    // Your code here...
})();





该用户从未签到

7

主题

24

帖子

31

积分

助理工程师

Rank: 1

积分
31

中秋纪念章国庆纪念章

发表于 2021-11-29 21:38:47 | 显示全部楼层
      //库存值 113这里开始
回复

使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    13

    主题

    416

    帖子

    723

    积分

    荣誉开发者

    Rank: 10Rank: 10Rank: 10

    积分
    723

    活跃会员热心会员突出贡献三好学生猫咪币纪念章中秋纪念章国庆纪念章荣誉开发者

    发表于 2021-11-29 23:55:09 | 显示全部楼层
    这个代码看的我头疼,不用写这么多setTimeout的,代码本来就会自上而下地运行,不需要你用setTimeout来规定执行顺序,只有在点击某些选项后元素发生改变时才需要加延迟,而且setTimeout也应该嵌套使用,而不是多个setTimeout并列然后2秒、3秒这样的。然后你这里出现问题主要还是querySelectorAll然后取下标这种写法,我个人非常不推荐,要知道页面结构不是一成不变的,你在测试时点击某些选项可能会发生节点插入、删除、移动位置等等,然后控制台里看到的下标,可能跟脚本运行时并不一致,还有如果你把脚本给别人用,他装个划词翻译的插件往页面里添加了几个元素,再装个广告屏蔽删掉几个元素,你的下标就可能出大问题。建议还是老老实实querySelector找,不要偷懒,实在不会找的话可以审查元素右键-Copy-Copy selector(chrome浏览器),自动生成选择器,一般会很长而且不一定准确,最好自己再调整下。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    3 小时前
  • 签到天数: 57 天

    [LV.5]常住居民I

    354

    主题

    3128

    帖子

    3129

    积分

    管理员

    非物质文化遗产社会摇传承人

    Rank: 10Rank: 10Rank: 10

    积分
    3129

    猫咪币纪念章国庆纪念章中秋纪念章荣誉开发者家财万贯管理员

    发表于 2021-11-30 09:16:29 | 显示全部楼层
    cxxjackie 发表于 2021-11-29 23:55
    这个代码看的我头疼,不用写这么多setTimeout的,代码本来就会自上而下地运行,不需要你用setTimeout来规定 ...

    悟了
    我之前看到还思考了半天可能什么问题...
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    该用户从未签到

    7

    主题

    24

    帖子

    31

    积分

    助理工程师

    Rank: 1

    积分
    31

    中秋纪念章国庆纪念章

    发表于 2021-11-30 10:30:19 | 显示全部楼层
    cxxjackie 发表于 2021-11-29 23:55
    这个代码看的我头疼,不用写这么多setTimeout的,代码本来就会自上而下地运行,不需要你用setTimeout来规定 ...

    好的·找了一个元素定位插件目测挺好用的
    回复

    使用道具 举报

    该用户从未签到

    7

    主题

    24

    帖子

    31

    积分

    助理工程师

    Rank: 1

    积分
    31

    中秋纪念章国庆纪念章

    发表于 2021-11-30 10:34:36 | 显示全部楼层
    解压后打开网址edge://extensions/拖到里面就好了
    https://www.cnblogs.com/haifeima/p/12907023.html

    chropath.zip

    532.37 KB, 下载次数: 0

    回复

    使用道具 举报

  • TA的每日心情

    2022-6-29 15:12
  • 签到天数: 36 天

    [LV.5]常住居民I

    15

    主题

    159

    帖子

    151

    积分

    荣誉开发者

    Rank: 10Rank: 10Rank: 10

    积分
    151

    荣誉开发者国庆纪念章中秋纪念章

    发表于 2021-11-30 23:27:38 | 显示全部楼层
    cxxjackie 发表于 2021-11-29 23:55
    这个代码看的我头疼,不用写这么多setTimeout的,代码本来就会自上而下地运行,不需要你用setTimeout来规定 ...

    gg牛啊我悟了
    摸鱼中
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    3

    帖子

    11

    积分

    助理工程师

    Rank: 1

    积分
    11
    发表于 2021-12-2 14:02:50 | 显示全部楼层
    我也是有一个油猴脚本,之前一直用着都可以写文本框的,今天突然就写不进去了。控制台就可以写进去,奇怪。
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表