写入文本失败但控制台输入没问题有时间限制
写入文本失败但控制台输入没问题,有时间限制就是运行到最后几步gg了{:4_88:},搞了半天不行,新手学习网址 https://qpanpan.com/账号123456
密码+Jp123456
// ==UserScript==
// @name 冰火信息编辑
// @namespace http://tampermonkey.net/
// @version 0.1
// @descriptiontry 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.value = "商品名称";
aq.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.value = "商品单位";
aq.dispatchEvent(evt);
}, 800)
//4.第三方销量
setTimeout(() => {
var aq = document.querySelectorAll(".el-input__inner");
const evt = new Event('input');
aq.value = "100"; //第三方销量
aq.dispatchEvent(evt);
}, 1000)
//5.库存
setTimeout(() => {
var aq = document.querySelectorAll(".el-input__inner");
const evt = new Event('input');
aq.value = "100"; //库存
aq.dispatchEvent(evt);
}, 1200)
setTimeout(() => {
//商品规格页面跳转********************************************************************************************************
var qq1 = document.querySelectorAll("div");
qq1.click();
}, 2000)
setTimeout(() => {
//整理商品规格页面运行
//1.开启商品规格
var aq = document.querySelectorAll(".el-input__inner");
var qq1 = document.querySelector(".option-box input");
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.value = "颜色"; //商品规格
aq.dispatchEvent(evt);
}
}
}, 2600);
//4.输入规格项名确定按钮
setTimeout(() => {
var qq = document.querySelectorAll("button");
qq.click();
}, 2800);
//5.填写第一个规格值
setTimeout(() => {
var aq = document.querySelectorAll(".el-input__inner");
const evtt = new Event('input');
aq.value = "黑色"; //第一个规格值
aq.dispatchEvent(evtt);
}, 3000);
//6.添加规格值按钮·来添加第二个规格
setTimeout(() => {
var qq3 = document.querySelector(
".goods-spec_info_form-content 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.value = "白色"; //第二个规格值
aq.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.value = "尺寸"; //第二个规格值
aqq.dispatchEvent(evtt);
}, 5800);
//10.输入规格项名确定按钮
setTimeout(() => {
var qq5 = document.querySelectorAll("button");
qq5.click();
}, 7000);
//11.填写第二个规格项的第一个规格值
setTimeout(() => {
var aq = document.querySelectorAll(".el-input__inner");
const evtt = new Event('input');
aq.value = "M"; //因为第二个规格项占了一个19值,所以+1成了20
aq.dispatchEvent(evtt);
}, 7200);
//12.添加规格值按钮
setTimeout(() => {
var qq6 = document.querySelectorAll(
".goods-spec_info_form-content button");
qq6.click();
}, 7400);
//13输入第二个规格值
setTimeout(() => {
var aq = document.querySelectorAll(".el-input__inner");
const evtt = new Event('input');
aq.value = "L"; //第二个规格值
aq.dispatchEvent(evtt);
}, 7600);
//12.添加规格值按钮
setTimeout(() => {
var qq7 = document.querySelectorAll(
".goods-spec_info_form-content button");
qq7.click();
}, 7800);
//13输入第二个规格值
setTimeout(() => {
var aq = document.querySelectorAll(".el-input__inner");
const evtt = new Event('input');
aq.value = "XL"; //第二个规格值
aq.dispatchEvent(evtt);
}, 8000);
//设置库存
setTimeout(() => {
var qq1 = document.querySelectorAll(".el-popover__reference");
qq1.click(); //1是分组 3是市场价格4是现价
}, 8200)
//库存值 113
setTimeout(() => {
var aq = document.querySelectorAll(".el-input__inner");
const evt = new Event('input');
aq.value = "100";
aq.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.click();
},14600);
setTimeout(() => {
//设置现价
var qq1 = document.querySelectorAll(".el-popover__reference");
qq1.click();
},14800);
setTimeout(() => {
//现价值
var aq = document.querySelectorAll(".el-input__inner");
const evt = new Event('input');
aq.value = "100";
aq.dispatchEvent(evt);
}, 16000);
setTimeout(() => {
//确定现价按钮
var qq1 = document.querySelectorAll(".el-button--primary");
qq1.click();
}, 16200);
}, 5000);
// Your code here...
})();
//库存值 113这里开始 这个代码看的我头疼,不用写这么多setTimeout的,代码本来就会自上而下地运行,不需要你用setTimeout来规定执行顺序,只有在点击某些选项后元素发生改变时才需要加延迟,而且setTimeout也应该嵌套使用,而不是多个setTimeout并列然后2秒、3秒这样的。然后你这里出现问题主要还是querySelectorAll然后取下标这种写法,我个人非常不推荐,要知道页面结构不是一成不变的,你在测试时点击某些选项可能会发生节点插入、删除、移动位置等等,然后控制台里看到的下标,可能跟脚本运行时并不一致,还有如果你把脚本给别人用,他装个划词翻译的插件往页面里添加了几个元素,再装个广告屏蔽删掉几个元素,你的下标就可能出大问题。建议还是老老实实querySelector找,不要偷懒,实在不会找的话可以审查元素右键-Copy-Copy selector(chrome浏览器),自动生成选择器,一般会很长而且不一定准确,最好自己再调整下。 cxxjackie 发表于 2021-11-29 23:55
这个代码看的我头疼,不用写这么多setTimeout的,代码本来就会自上而下地运行,不需要你用setTimeout来规定 ...
悟了
我之前看到还思考了半天可能什么问题... cxxjackie 发表于 2021-11-29 23:55
这个代码看的我头疼,不用写这么多setTimeout的,代码本来就会自上而下地运行,不需要你用setTimeout来规定 ...
好的·找了一个元素定位插件目测挺好用的{:4_95:}
解压后打开网址edge://extensions/拖到里面就好了
https://www.cnblogs.com/haifeima/p/12907023.html cxxjackie 发表于 2021-11-29 23:55
这个代码看的我头疼,不用写这么多setTimeout的,代码本来就会自上而下地运行,不需要你用setTimeout来规定 ...
gg牛啊我悟了 我也是有一个油猴脚本,之前一直用着都可以写文本框的,今天突然就写不进去了。控制台就可以写进去,奇怪。
页:
[1]