• 新浪微博:
  • 微信 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:03-18

按键精灵安卓版
立即下载

软件版本:3.3.8
软件大小:62.5M
更新时间:12-18

按键精灵iOS版
立即下载

软件版本:1.7.1
软件大小:29.2M
更新时间:06-22

最新企业版UiBot
立即下载

软件版本:3.3
软件大小:282M
更新时间:08-06

快捷导航

登录 后使用快捷导航
没有帐号? 注册

登录 注册
发新话题 回复该主题

网页自动填表教程来了,源码拿走不谢! [复制链接]

1#
教程最后附按键源码,欢迎新手学习-
在抖音上关注“按键精灵”(抖音号:anjian07),我们将不定期发布各类办公中、生活里会用到的脚本小技巧,本篇教程小视频,已发布于抖音,欢迎观看!


如何将EXCEL里的信息自动填写到网页表单里?想让按键精灵帮你告别繁琐操作,继续往下看~

一、脚本思路

这次的脚本功能上比较简单,简单的分就只有两个步骤:
1、读取Excel表格数据
2、打开浏览器把数据逐条填入网页


二、插件命令
命令名称:网页_设置输入框
命令功能:向网页中指定特征的文本框输入内容
命令参数:参数1【必选】:字符串,输入内容
参数2【必选】:字符串,元素特征
返回值: 无


命令名称: 网页_元素是否存在
命令功能: 获取网页元素对象,判断指定特征的网页元素是否存在,并返回匹配的个数
命令参数: 参数1【必选】:字符串,元素特征
返回值: 整数型,返回匹配数


命令名称: 网页_元素是否显示
命令功能: 获取网页元素对象,判断指定特征的网页元素是否显示
命令参数: 参数1【必选】:字符串,元素特征
返回值: 逻辑型,是否显示


这次为了处理验证码的问题,还需要用到按键精灵自带的窗口查找插件【Window.dll】


命令名称:Find 查找窗口
命令功能: 查找窗口类名或者标题
命令参数: 参数1 字符串型,窗口类名
参数2 字符串型,窗口标题
返 回 值: 整数型,窗口句柄


命令名称:FindEx 查找子窗口
命令功能:根据父窗口句柄查找子窗口匹配类名或者匹配标题
命令参数:参数1 整数型,父窗口句柄
参数2 整数型,子窗口句柄
参数3 字符串型,匹配类名
参数4 字符串型,匹配标题
返 回 值:整数型,句柄


命令名称:GetWindowRect 窗口边框大小
命令功能:得到窗口句柄的边框大小(包括标题栏)
命令参数:参数1 整数型,窗口句柄
返 回 值:字符串型,边框大小(包括标题栏)
注:返回为:边框窗口左角X坐标|边框窗口左上角Y坐标|边框窗口右下角X坐标|边框窗口右下角Y坐标


三、脚本实现


这次脚本的大部分功能都是很简单的调用命令而已:
1、读取Excel表格内容
2、在网页中相应的元素里填入相应的内容

这部分的内容大家可以直接看看源码就能了解,但由于这次提交表单过程中有遇到验证码,所以这里主要说下遇到的验证码的解决思路:
在点击提交表单后会弹出验证码的提示

您所在的用户组无法下载或查看附件

可以使用【网页_元素是否存在】命令来识别是否出现了这个提示。

您所在的用户组无法下载或查看附件

接下来使用网页元素点击来点击这个验证码长条,就会出现滑块验证。

您所在的用户组无法下载或查看附件


首先,先定位到这个白色的滑块元素,取这个元素的坐标
  1. // 获取滑块的位置
  2. 返回值 = 神梦_网页填表.网页_取元素信息("offset","//*[@id=""nc_1_n1z""]")
  3. 返回值 = split(返回值, "|")
  4. Dim x, y
  5. x = CInt(返回值(0)) : y = CInt(返回值(1))
  6. TracePrint "滑块位置是:" & x & ", " & y
复制代码
需要注意的是,这里获取到的滑块的坐标并不是在屏幕上的坐标,而是这个滑块在浏览器客户区里的坐标,是已浏览器为起始点的相对坐标。
要获取这个滑块的屏幕绝对坐标,那就需要先获取浏览器窗口的坐标,然后把浏览器窗口的坐标+滑块的相对坐标,得到的就是滑块在屏幕上的绝对坐标,这样就能直接用鼠标来操作。

  1. // 转换相对坐标为屏幕绝对坐标
  2. Dim Handle_Chrome, Handle_ChromeClient
  3. Handle_Chrome = Window.Find("Chrome_WidgetWin_1", "按键精灵自动填表示例 - Google Chrome")
  4. If Handle_Chrome > 0 Then
  5. Handle_ChromeClient = Window.FindEx(Handle_Chrome, 0, "Chrome_RenderWidgetHostHWND", "Chrome Legacy Window")
  6. If Handle_ChromeClient > 0 Then
  7. 返回值 = Window.GetWindowRect(Handle_ChromeClient)
  8. 返回值 = split(返回值, "|")
  9. x1 = CInt(返回值(0)) : y1 = CInt(返回值(1))
  10. TracePrint "浏览器窗口位置是:" & x1 & ", " & y1
  11. Call 轨迹移动(x + x1 + 10, y + y1 + 10, x + x1 + 10 + 270, y + y1 + 10, 1)
  12. End If
  13. End If

  14. Function 轨迹移动(x1, y1, x2, y2, t)
  15. MoveTo x1, y1
  16. LeftDown 1
  17. k = (y1 - y2) / (x1 - x2)
  18. b = y1 - k * x1
  19. For x = x1 To x2 Step sgn(x2 - x1)
  20. MoveTo x, (k * x + b)
  21. Delay t
  22. Next
  23. LeftUp 1
  24. End Function
复制代码

1、通过窗口查找命令查找浏览器主窗口句柄
2、通过查找子窗口命令找到浏览器的客户区句柄
3、获取客户区位置坐标
4、客户区的起始坐标 + 滑块相对坐标 = 滑块在屏幕上的绝对坐标
5、通过鼠标命令来模拟滑块滑动



完整源码下载:
您所在的用户组无法下载或查看附件

关注按键精灵抖音号,我们将不定期发布各类办公中、生活里会用到的脚本小技巧哦~



本主题由 管理员 兄弟客服03 于 2020/12/16 15:44:52 执行 移动主题 操作
发新话题 回复该主题