问卷星自动填写,智能验证和滑动块

之前在 这里 介绍了基本的问卷星填写方法,然而博主在之后自动填写时发现经常需要智能验证,而且还加一个滑动块拖动,于是今天继续研究一下添加这个功能。

下面的示例是电脑版的问卷星页面,博客里的 ff3.png 改为
在这里插入图片描述

@20-3-30
最近发现拖动滑块哪里总是有问题,试了几种办法,采用假装拖动一次,然后再拖动比较有效。

@20-5-18
最近发现最后那一步容易出现验证出错的情况,大概调调参数就行了。

智能验证

这个就是一个点击的问题,这个点击可以放在 pyautogui 也可以放在js 中,当然放在Js中最简单,虽然有时候不会出现,但是写上也不会报错。

于是js部分代码变成了,

// getById("ctlNext").click() 这个是手机版
getById("submit_button").click()
window.scrollTo(0, document.documentElement.clientHeight*8); // 拉到最下面
getById("rectMask").click() // 点击只能验证

这里就不加延时等待了,似乎这个验证按钮是瞬间出现的,即直接用js代码调出来的没有进行提交。

滑块拖动

这里由于涉及提交因此有延时,我打算放到pyautogui中,思路还是用图片检测到滑块位置,然后拖动完成。
使用图片ff5.png
在这里插入图片描述
@20-4-4 竟然又修改了图标 (下面有个小蓝点)
在这里插入图片描述

...
pyautogui.keyDown('Enter')
    
time.sleep(2)
cnt=0
while True:
    cposition = pyautogui.locateOnScreen('pics/ff5.png')
    if cposition: break
    time.sleep(0.5)
    cnt+=1
    if cnt>6: exit()
    
cc = pyautogui.center(cposition)
pyautogui.moveTo(cc[0],cc[1]) 
time.sleep(0.5) # 好像不能太快,会出错
pyautogui.dragRel(512, 0, duration=1) # duration 也不能太小

至此终于全自动了,希望不要再改了。这种每天都要提交一次的文件,官方给出自动填写脚本好,不过这次也增加了自己自动化的知识,虽然不难,但是作用很大,收获很多。

补充新修改的拖滑块方法,就是代码最后部分改成如下:

pyautogui.moveTo(cc[0],cc[1]) 
pyautogui.dragRel(200, 0, duration=0.8) # 假装拖一下
pyautogui.moveTo(cc[0],cc[1]) 
pyautogui.dragRel(512, 0, duration=0.8)

补充拖动容易出错的解决方法,将最后的代码改成

pyautogui.dragRel(256, 0, duration=0.8)
pyautogui.moveTo(cc[0],cc[1]) 
pyautogui.dragRel(320, 0, duration=3)

你可能感兴趣的:(python,pyautogui,问卷星,智能验证,滑动块)