【办公类-22-05】20240419 UIBOT填写“PATHS课程”的《SSBS校园行为问卷》

背景需求:

每年都有一个PATHS课程的“家长问卷调查”和“教师问卷调查”需要填写

作为教师,每次要对全班所有的孩子进行评价,每位孩子64题!

反复点题目,感觉非常累,工作操作就是两位老师,每人做一半孩子的问卷,但也需要很长的时间。

设计需求:

29个孩子,老师要反复点击29*64次,又看有点,又移动鼠标,实在太累了,太烦躁了,很容易最后就随便填写了,影响问卷质量。

所以我想做一个UIBOT,能够读取EXCLE表单,自动点击选择五级量表答案,然后提交。

一、提取题目,制作EXCEL表单

1、复制题目

2、黏贴到TXT内(去除选项的圆圈)

3、黏贴到EXCEL

4、删除从不、偶尔、有时、经常、总是

5、删除空行

6、把竖列变成横列

7、删除A列的题目,差异一列,改成学号和姓名

花了一点时间,把所有的学生的得分输入好

二、写代码

这个代码写了一晚上……

(一)屏幕放大到250%

确保一次只能出现一道题的5个答案

(二)测试每一页64道题目需要移动多少次滚轮

虽然每个题目行数相等

但在测试中,发现固定滚动5次并不能保证64题都正好显示五个选项,通常8题后,就会出现五个选项部分被遮挡的情况。

所以我进过大量测试后,将每道题的滚动次数逐一确定。

这些数字的意思是,模拟鼠标滚动5次,模拟鼠标运动7次。

(三)根据EXCEL数字,读取页面的文字图像,模拟点击

1、读取C2:BN30之间的所有数字

2、如果数字等于1,点击屏幕中的图像“从不”,以此类推

做到64题后,滚轮到页面底部,点击提交

(四)单人64道题完成后,进入下一个孩子的填写页面需要手动

因为29位幼儿信息目录上无法搜索孩子的学号或名字,加上我把页面放大了250%,直接点击下一位孩子的”填写问卷“按钮,也不太可能了,所以这一部分都是手动切换填写页面。

全部代码展示:

Dim temp,arrRet,滚动,iRet,objExcelWorkBook,全部区域,行数,长度,行Rem 滚动次数的列表滚动 = [14]
For i = 1 To 7 step 1滚动=push(滚动,5)Next滚动=push(滚动,6)For i = 1 To 7 step 1滚动=push(滚动,5)Next滚动=push(滚动,7)For i = 1 To 7 step 1滚动=push(滚动,5)Next
For i = 1 To 7 step 1滚动=push(滚动,5)Next滚动=push(滚动,6)For i = 1 To 7 step 1滚动=push(滚动,5)Next滚动=push(滚动,6)For i = 1 To 7 step 1滚动=push(滚动,5)Next滚动=push(滚动,6)For i = 1 To 7 step 1滚动=push(滚动,5)Next滚动=push(滚动,6)For i = 1 To 7 step 1滚动=push(滚动,5)Next滚动=push(滚动,7)TracePrint(滚动)
次=UBound(滚动)TracePrint(次)Rem 63个// Rem 滚动次数
// objExcelWorkBook = Excel.OpenExcel('''C:\Users\jg2yXRZ\OneDrive\桌面\path问卷\paths教师问卷.xlsx''',true,"Excel","","")
// 全部区域=Excel.ReadRange(objExcelWorkBook,"Sheet1","C2:BN30",true)
// 行数=UBound(全部区域)
// TracePrint(行数)// Rem 63个
// For w = 0 To 行数 step 1
// TracePrint(全部区域[w])
// 长度=UBound(全部区域[w])// TracePrint(长度)
// Next
// Rem 滚动次数// For v = 0 To 个 step 1// Mouse.Wheel(个[v],"down", [],{"iDelayAfter":300, "iDelayBefore":200})
// Next
// Excel.CloseExcel(objExcelWorkBook,true)Rem 250%
objExcelWorkBook = Excel.OpenExcel('''C:\Users\jg2yXRZ\OneDrive\桌面\path问卷\paths教师问卷模板(1).xlsx''',false,"Excel","","")
全部区域=Excel.ReadRange(objExcelWorkBook,"Sheet1","C2:BN30",true)
TracePrint(全部区域)
行=Len(全部区域)
TracePrint(行)
Rem 29行=29人
Delay(3000)
For p = 0 To 行-1 step 1
TracePrint(全部区域[p])Rem 【63个数字】【63个数字】
For v = 0 To 次 step 1TracePrint(滚动[v])
Delay(1000)Mouse.Wheel(滚动[v],"down", [],{"iDelayAfter":300, "iDelayBefore":200})
选项数字 = 全部区域[p][v]If 选项数字='1' 
#icon("@res:bbebe130-fccc-11ee-b3e3-139b772dd86b.png")
Image.Click({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"问卷清单 - 思智树教师平台 - Google Chrome","app":"chrome"}]},{"x": 0, "y": 0, "width": 0, "height": 0},@res"bbebe130-fccc-11ee-b3e3-139b772dd86b.png",0.9,"left","click",10000, {"bContinueOnError": false, "iDelayAfter": 300, "iDelayBefore": 200, "bSetForeground": true, "sCursorPosition": "Center", "iCursorOffsetX": 0, "iCursorOffsetY": 0, "sKeyModifiers": [],"sSimulate": "simulate","sMatchType":"GrayMatch", "iSerialNo": 1})
End If
If 选项数字='2' #icon("@res:ecc9cc40-fccc-11ee-b3e3-139b772dd86b.png")
Image.Click({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"问卷清单 - 思智树教师平台 - Google Chrome","app":"chrome"}]},{"x": 0, "y": 0, "width": 0, "height": 0},@res"ecc9cc40-fccc-11ee-b3e3-139b772dd86b.png",0.9,"left","click",10000, {"bContinueOnError": false, "iDelayAfter": 300, "iDelayBefore": 200, "bSetForeground": true, "sCursorPosition": "Center", "iCursorOffsetX": 0, "iCursorOffsetY": 0, "sKeyModifiers": [],"sSimulate": "simulate","sMatchType":"GrayMatch", "iSerialNo": 1})
End If
If 选项数字='3' #icon("@res:08d11740-fccd-11ee-b3e3-139b772dd86b.png")
Image.Click({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"问卷清单 - 思智树教师平台 - Google Chrome","app":"chrome"}]},{"x": 0, "y": 0, "width": 0, "height": 0},@res"08d11740-fccd-11ee-b3e3-139b772dd86b.png",0.9,"left","click",10000, {"bContinueOnError": false, "iDelayAfter": 300, "iDelayBefore": 200, "bSetForeground": true, "sCursorPosition": "Center", "iCursorOffsetX": 0, "iCursorOffsetY": 0, "sKeyModifiers": [],"sSimulate": "simulate","sMatchType":"GrayMatch", "iSerialNo": 1})
End IfIf 选项数字='4' #icon("@res:0b09c930-fccd-11ee-b3e3-139b772dd86b.png")
Image.Click({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"问卷清单 - 思智树教师平台 - Google Chrome","app":"chrome"}]},{"x": 0, "y": 0, "width": 0, "height": 0},@res"0b09c930-fccd-11ee-b3e3-139b772dd86b.png",0.9,"left","click",10000, {"bContinueOnError": false, "iDelayAfter": 300, "iDelayBefore": 200, "bSetForeground": true, "sCursorPosition": "Center", "iCursorOffsetX": 0, "iCursorOffsetY": 0, "sKeyModifiers": [],"sSimulate": "simulate","sMatchType":"GrayMatch", "iSerialNo": 1})
End IfIf 选项数字='5' #icon("@res:0d166210-fccd-11ee-b3e3-139b772dd86b.png")
Image.Click({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"问卷清单 - 思智树教师平台 - Google Chrome","app":"chrome"}]},{"x": 0, "y": 0, "width": 0, "height": 0},@res"0d166210-fccd-11ee-b3e3-139b772dd86b.png",0.9,"left","click",10000, {"bContinueOnError": false, "iDelayAfter": 300, "iDelayBefore": 200, "bSetForeground": true, "sCursorPosition": "Center", "iCursorOffsetX": 0, "iCursorOffsetY": 0, "sKeyModifiers": [],"sSimulate": "simulate","sMatchType":"GrayMatch", "iSerialNo": 1})
End IfNext
Mouse.Wheel(3,"down", [],{"iDelayAfter":300, "iDelayBefore":200})
#icon("@res:e3fa1e10-fd1e-11ee-a58c-e91e97990db1.png")
Image.Click({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"问卷清单 - 思智树教师平台 - Google Chrome","app":"chrome"}]},{"x": 0, "y": 0, "width": 0, "height": 0},@res"e3fa1e10-fd1e-11ee-a58c-e91e97990db1.png",0.9,"left","click",10000, {"bContinueOnError": false, "iDelayAfter": 300, "iDelayBefore": 200, "bSetForeground": true, "sCursorPosition": "Center", "iCursorOffsetX": 0, "iCursorOffsetY": 0, "sKeyModifiers": [],"sSimulate": "simulate","sMatchType":"GrayMatch", "iSerialNo": 1})
Delay(5000)Keyboard.Press("R", "press", ["Ctrl"],{"iDelayAfter": 300, "iDelayBefore": 200, "sSimulate": "simulate"})Delay(5000)Mouse.Move(1912, 600, false,{"iDelayAfter": 300, "iDelayBefore": 200})
Mouse.Click("left", "click", [],{"iDelayAfter": 300, "iDelayBefore": 300})
Mouse.Wheel(5,"down", [],{"iDelayAfter":300, "iDelayBefore":200})Mouse.Move(1422, 650, false,{"iDelayAfter": 300, "iDelayBefore": 200})
Mouse.Click("left", "click", [],{"iDelayAfter": 300, "iDelayBefore": 300})
iRet = Dialog.MsgBox("手动","Laiye Automation",0,1,0)
Next
Excel.CloseExcel(objExcelWorkBook,true)

视频展示:

一、PATHS情绪课程问卷(四人答题,自动点选选项,手动切换学号)

20240419UIBOT填写问卷(四人答题时间)

一份问卷(64题)与一份问卷(64题)之间有暂停按钮,便于人工选择下一份未完成的蓝色文字,打开问卷页面,便于程序自动填写

二、PATHS情绪课程问卷(单人答题时间)64题

20240419UIBOT填写情绪问卷(单人答题时间)

说明:

1、时间上看,做一份64题大约需要4分钟,30人就是2小时。并不比人工点击快多少。

2、效率上看,程序自动点击,不会点错,在自动选择答案时并在填完后暂停,操作者可以再此期间做些其他工作。无论多久,再回来看时,页面都保持暂停状态

3、不足之处:问卷与问卷之间需要手动切换,人力还是被圈在电脑前。但总比人工不断动脑、再无数次点击选项要省力一点。

特别说明:

第一次运行(中4班)时,最后报错,数组超过限制。

问其他班级老师要了班级名单,再测试了一次

  

第二次运行,成功!说明29行要-1=28行,0-28才是29行

感悟:

用这个uibot代码,应对明年的PATHS问卷就省力多了(O(∩_∩)O~~)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第25题K个一组翻转链表

题目&#xff1a; 题解&#xff1a; func reverseKGroup(head *ListNode, k int) *ListNode {hair : &ListNode{Next: head}pre : hairfor head ! nil {tail : prefor i : 0; i < k; i {tail tail.Nextif tail nil {return hair.Next}}nex : tail.Nexthead, tail my…

U盘秒变0字节?别慌,数据恢复有妙招!

在日常的工作和生活中&#xff0c;U盘已成为我们不可或缺的数据存储工具。然而&#xff0c;有时候我们可能会遇到一个令人头疼的问题&#xff1a;原本存有重要文件的U盘&#xff0c;突然间容量显示为0字节。这意味着U盘中的数据全部丢失&#xff0c;无法读取。那么&#xff0c;…

hackthebox - Redeemer

2024.4.19 TASK 1 Which TCP port is open on the machine? 6379 TASK 2 Which service is running on the port that is open on the machine? redis TASK 3 What type of database is Redis? Choose from the following options: (i) In-memory Database, (ii) Traditiona…

UltraScale+的10G/25G Ethernet Subsystem IP核使用

文章目录 前言一、设计框图1.1、xxv_ethernet_01.2、xxv_ethernet_0_sharedlogic_wrapper1.3、xxv_ethernet_0_clocking_wrapper1.4、xxv_ethernet_0_common_wrapper 二、IP核配置三、仿真四、上板测速 前言 前面我们学习了很多基于XILINX 7系列的高速接口使用&#xff0c;本文…

组合预测 | Matlab实现ICEEMDAN-SMA-SVM基于改进完备集合经验模态分解-黏菌优化算法-支持向量机的时间序列预测

组合预测 | Matlab实现ICEEMDAN-SMA-SVM基于改进完备集合经验模态分解-黏菌优化算法-支持向量机的时间序列预测 目录 组合预测 | Matlab实现ICEEMDAN-SMA-SVM基于改进完备集合经验模态分解-黏菌优化算法-支持向量机的时间序列预测预测效果基本介绍程序设计参考资料预测效果 基本…

爬取微博评论数据

# -*- coding: utf-8 -*- import requests #用于发送请求并且拿到源代码 from bs4 import BeautifulSoup #用于解析数据 1.找到数据源地址并且分析链接 2.发送请求并且拿到数据 3.在拿到的数据中解析出需要的数据 4.存储数据 headers { "User-Agent": "…

C++中string的用法总结+底层剖析

前言&#xff1a;在C语言中&#xff0c;我们经常使用字符串进行一系列操作&#xff0c;经常使用的函数如下&#xff1a;增删改查 &#xff08;自己造轮子&#xff09;&#xff0c;C中设计出string容器&#xff0c;STL库中为我们提供了以上函数&#xff0c;所以我们使用string容…

QTableView获取可见的行数

场景 当我们需要实时刷新QTableView时&#xff0c;而此时tableView的数据量较大&#xff0c;如果全部刷新显然不合理&#xff0c;如果可以只对用户看的到的数据进行刷新那就最好了&#xff0c;经过一番摸索找到了几种方式&#xff0c;可供参考 代码 方法1 QVector<int>…

64B/66B编码 自定义PHY层设计

一、前言 之前的一篇文章讲解了64B/66B的基本原理&#xff0c;本篇在基于64B/66B GT Transceiver的基础之上设计自定义PHY。基本框图如下。 二、GT Mdule GT Module就按照4个GT CHannel共享一个GT COMMON进行设置&#xff0c;如下图。要将例子工程中的GT COMMON取出&#xff…

docker环境搭建

项目环境搭建 1、安装 Linux 虚拟机 &#xff08;1&#xff09;下载安装&#xff1a; VM VirtualBox 下载安装&#xff1a;Downloads – Oracle VM VirtualBox&#xff0c;要先开启CPU虚拟化 &#xff08;2&#xff09;通过vagrant&#xff0c;在VirtualBox中安装虚拟机 下…

STM32学习和实践笔记(15):STM32中断系统

中断概念 CPU执行程序时&#xff0c;由于发生了某种随机的事件(外部或内部)&#xff0c;引起CPU暂 时中断正在运行的程序&#xff0c;转去执行一段特殊的服务程序(中断服务子程序 或中断处理程序)&#xff0c;以处理该事件&#xff0c;该事件处理完后又返回被中断的程序 继…

MySQL基础-----约束详解

目录 一. 概述: 二.约束演示&#xff1a; 三.外键约束&#xff1a; 3.1介绍&#xff1a; 3.2外键约束语法&#xff1a; 3.3删除&#xff0c;更新行为&#xff1a; 一. 概述: &#x1f9d0;&#x1f9d0;概念&#xff1a;约束是作用于表中字段上的规则&#xff0c;用于限制…

css面试题整理

css面试题 一、HTML语义化标签二、块级元素、内联元素、 行内块元素三、盒模型 一、HTML语义化标签 什么是HTML语义化标签&#xff1f;语义化标签的优势&#xff1f; HTML语义化标签顾名思义就是赋予标签含义&#xff0c;比如说<p>标签代表的是段落&#xff0c;还有<…

springboot结合vue实现文件上传下载功能

紧接着上一次的博客&#xff0c;这次来实现一下文件(主要是图片)的上传和下载功能&#xff0c;上一次的博客如下所示&#xff1a; Springboot集成JWT token实现权限验证-CSDN博客 其实文件的上传和下载功能(后端的部分)&#xff0c;在我之前的博客就已经有写了&#xff0c;所以…

LD-Pruner、EdgeFusion(On-Device T2I)、FreeDiff、TextCenGen、MemLLM

本文首发于公众号&#xff1a;机器感知 https://mp.weixin.qq.com/s/KiyNfwYWU-wBiCO-hE9qkA 苏 The devil is in the object boundary: towards annotation-free instance segmentation using Foundation Models Foundation models, pre-trained on a large amount of data…

# 从浅入深 学习 SpringCloud 微服务架构(三)注册中心 Eureka(1)

从浅入深 学习 SpringCloud 微服务架构&#xff08;三&#xff09;注册中心 Eureka&#xff08;1&#xff09; 段子手168 1、微服务的注册中心 注册中心可以说是微服务架构中的”通讯录”&#xff0c;它记录了服务和服务地址的映射关系。 在分布式架构中服务会注册到这里&am…

Docker使用教程及docker部署Vue项目

什么是Docker及其工作原理 虚拟化技术Docker是什么&#xff1f;三大基本术语核心算法原理和具体操作步骤 Docker和传统虚拟化技术区别为什么使用Docker&#xff1f;Docker有什么作用&#xff1f;1.解决应用部署的环境问题遇到问题达到效果 2.容器化 docker的各种命令解释运行机…

6.GodotCanvasItem、Node2D及自定义节点

CanvasItem节点 CanvasItem节点&#xff0c;CanvasItem -> Node&#xff0c;所以CanvasItem继承了Node的所有功能Canvas是画布的意思&#xff0c;所以CanvasItem代表了就是可以被绘制的节点&#xff0c;可以设置可视化界面和材质的颜色所有的2D节点和GUI节点都继承于CanvasI…

网络行为分析与异常检测

构建防火墙和使用简单的安全解决方案不足以保护网络免受网络异常或攻击&#xff0c;因为DDoS攻击、未知恶意软件和其他安全威胁一直在上升&#xff0c;改变了网络安全格局。网络管理员必须积极主动地分析网络&#xff0c;获得对网络的完全控制&#xff0c;并全面了解网络流量活…

访问云平台中linux系统图形化界面,登录就出现黑屏的问题解决(ubuntu图形界面)

目录 一、问题-图形化界面访问黑屏 二、系统环境 &#xff08;一&#xff09;网络结构示意图 &#xff08;二&#xff09;内部机器版本 三、分析 四、解决过程 &#xff08;一&#xff09;通过MobaXterm远程访问图形化界面(未成功) 1、连接方法 2、连接结果 &#xf…