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

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

[复制链接]

该用户从未签到

7

主题

17

回帖

32

积分

助理工程师

积分
32
发表于 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

主题

17

回帖

32

积分

助理工程师

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

使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    857

    回帖

    1356

    积分

    荣誉开发者

    积分
    1356

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

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

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    620

    主题

    5087

    回帖

    5960

    积分

    管理员

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

    积分
    5960

    荣誉开发者管理员油中2周年生态建设者喜迎中秋

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

    悟了
    我之前看到还思考了半天可能什么问题...
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    该用户从未签到

    7

    主题

    17

    回帖

    32

    积分

    助理工程师

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

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

    使用道具 举报

    该用户从未签到

    7

    主题

    17

    回帖

    32

    积分

    助理工程师

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

    chropath.zip

    532.37 KB, 下载次数: 0

    回复

    使用道具 举报

  • TA的每日心情

    2023-12-8 22:55
  • 签到天数: 37 天

    [LV.5]常住居民I

    15

    主题

    145

    回帖

    153

    积分

    荣誉开发者

    积分
    153

    荣誉开发者

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

    gg牛啊我悟了
    摸鱼中
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    2

    回帖

    11

    积分

    助理工程师

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

    使用道具 举报

    发表回复

    本版积分规则

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