[油猴脚本开发指南]脚本自动化之模拟点击和表单填写

查看数: 107384 | 评论数: 174 | 收藏 10
开灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-12-6 16:07

正文摘要:

本节主要内容: 首先将介绍模拟点击和表单填写的原理,然后使用脚本实现一个自动化登录论坛的功能 论坛更新后页面自动登录例子 https://bbs.tampermonkey.net.cn/thread-1326-1-1.html 模拟点击 前端开发的同学应该 ...

回复

qinpeng407 发表于 2024-3-12 10:33:33
王一之 发表于 2024-3-12 10:21
哥哥新开一个帖子提问吧 https://bbs.tampermonkey.net.cn/forum-77-1.html

好的,谢谢哥哥
王一之 发表于 2024-3-12 10:21:19
qinpeng407 发表于 2024-3-12 10:03
[md]> 本帖最后由 qinpeng407 于 2024-3-12 10:08 编辑

> 本帖最后由 qinpeng407 于 2024-3-12 10:07 编 ...

哥哥新开一个帖子提问吧 https://bbs.tampermonkey.net.cn/forum-77-1.html
qinpeng407 发表于 2024-3-12 10:03:33

本帖最后由 qinpeng407 于 2024-3-12 10:08 编辑

本帖最后由 qinpeng407 于 2024-3-12 10:08 编辑

本帖最后由 qinpeng407 于 2024-3-12 10:07 编辑

网站页面显示:
复选框.png

代码:
网页代码.png

<input class="icon-large ng-pristine ng-valid fa fa-check-square-o ng-touched" ng-checked="check[item.vehId]" ng-class="{true:'fa fa-check-square-o',false:'fa fa-square-o'}[check[item.vehId]]" ng-click="singleCheck(item)" ng-init="check[item.vehId]=false" ng-model="check[item.vehId]" type="checkbox" checked="checked"

我写的脚本:
反馈.png

document.querySelector(".icon-large.ng-pristine.ng-untouched.ng-valid.fa.fa-square-o").checked=true;

反馈看起来是没问题的,但是页面没有任何反映。

请大神收下我的膝盖·

qinpeng407 发表于 2024-3-12 09:25:53
王一之 发表于 2024-3-11 17:04
表达式不对,没有搜到元素报错了

试试:".col-sm-3.pd_t_10 button"

感谢大神,成功·
王一之 发表于 2024-3-11 17:04:33
qinpeng407 发表于 2024-3-11 16:52
[md]> 本帖最后由 qinpeng407 于 2024-3-11 16:54 编辑

各位大神,我感觉自己学会了,又感觉自己没有学会 ...

表达式不对,没有搜到元素报错了

试试:".col-sm-3.pd_t_10 button"
qinpeng407 发表于 2024-3-11 16:52:19

本帖最后由 qinpeng407 于 2024-3-11 16:57 编辑

本帖最后由 qinpeng407 于 2024-3-11 16:54 编辑

各位大神,我感觉自己学会了,又感觉自己没有学会,想点击“查询”按钮,但是始终没有办法锁定。能帮忙看看吗?

网页代码:





查询

我写的是:document.querySelector('.col-sm-3 pd_t_10 button').click()

测试的时候一直找不到目标,显示NULL

麻烦各位大神给看一下。网页代码.png输入后的结果.png

disaster2415 发表于 2023-10-3 20:45:26
大佬,我是初学者,我想问一下如果这个网页没有自动登录的选项的话,有没有办法达到那种我一点进这个页面就自动输入账号密码然后登录的效果呢
Torey 发表于 2023-9-11 11:17:45
开始学习!!
王一之 发表于 2023-8-28 20:46:58
kfab 发表于 2023-8-28 16:58
[md]> 本帖最后由 kfab 于 2023-8-28 17:17 编辑

> [王一之 发表于 2023-6-30 10:15](forum.php?mod=redi ...

哥哥开个新的问答帖整理一下,我看看吧,这楼越盖越高了
kfab 发表于 2023-8-28 16:58:07

本帖最后由 kfab 于 2023-8-28 17:43 编辑

本帖最后由 kfab 于 2023-8-28 17:17 编辑

王一之 发表于 2023-6-30 10:15

可以看看这一篇文章,:nth-child()选择器

[油猴脚本开发指南]querySelector与css选择器入门

相同class的选择难住我好久,今天用ublock的选择元素过滤解决了。

虽然对我来说是个黑箱,但是想写的脚本算是可以进行下去了。

但是遇到了新的问题:控制台测试对目标文本框输入ok,但是放到脚本里就没反应。

Snipaste_2023-08-28_16-45-05.jpg

这个界面,本来是这个样子的

Snipaste_2023-08-28_16-44-29.jpg

在控制台测试输入是可以的

Snipaste_2023-08-28_16-52-19.jpg

但是放脚本就没反应了。

// ==UserScript==
// @name         【添加替换规则】
// @namespace    https://bbs.tampermonkey.net.cn/
// @version      0.1.0
// @description  reader页面添加【新增替换规则】按钮,点击替换按钮 ,添加选中文本到过滤规则页面
// @author       五味子
// @match        http://192.168.1.2:8080/#/reader
// ==/UserScript==

(function() {
    let btn=document.createElement("button");
    btn.style.position = "fixed";
    //appendChild,insertBefore,啥的不会用,就只能这样了
    btn.style.bottom = "600px";
    btn.style.right = "272px";
    btn.style.borderRadius = "50%";
    btn.style.border = "none";
    btn.style.width = "36px";
    btn.style.height = "36px";
    btn.style.backgroundColor = "#f8f1da";
    btn.style.fontSize = "18px";
    btn.style.fontWeight = "light";
    btn.style.boxShadow = "0px 0px 0px #888";
    btn.textContent = "⇆";
    btn.style.borderBlockColor = "#f8f1da";
    document.body.append(btn);

    btn.onclick=function(){
    //复制选中内容
    document.execCommand('Copy');
    //点击【设置】
    //document.querySelector("span:nth-of-type(4) > .el-popover__reference-wrapper > .el-popover__reference.tool-icon > .iconfont").click()
    //点击过【滤规则】
    //document.querySelector(".operation-zone > span.span-btn:nth-of-type(2)").click()
    //再次点击【设置】=关闭设置页面
    //document.querySelector("span:nth-of-type(4) > .el-popover__reference-wrapper > .el-popover__reference.tool-icon > .iconfont").click()
    //点击【新增规则】
    document.querySelector("div.el-dialog__wrapper:nth-of-type(5) > .el-dialog > .el-dialog__header > .custom-dialog-title > .el-dialog__title > span.span-btn.float-right:nth-of-type(1)").click()
    //点击过滤规则页面的【取消】=只显示新增规则页面
    //document.querySelector("div.el-dialog__wrapper:nth-of-type(5) > .el-dialog > .el-dialog__footer > .dialog-footer > .el-button--medium.el-button--default.el-button > span").click()
    //【名称】文本框输入,貌似无效
    document.querySelector("div.el-form-item:nth-of-type(1) > .el-form-item__content > .el-input > .el-input__inner").value="测试";

   }

})();

到这里就写不下去了

编辑下,刚发现,虽然输入的问题还是没解决,但是可以直接点击看不到的元素,一步到位点出想要的界面,省了好几步。

再编辑下,测试发现,第一次执
document.querySelector("div.el-form-item:nth-of-type(1) > .el-form-itemcontent > .el-input > .el-inputinner").value="测试";

没反应,但是第二次执行就会往文本框输入,好奇怪。

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