Python编写谷歌表单自动提交脚本报break不在循环内错误如何解决
代码问题修正方案
现有代码核心问题
input()默认返回字符串类型,直接做数值比较、自增运算都会报错,需要先转换为整数- while循环条件
countA<countA恒为False,永远不会进入循环执行逻辑 break关键字只能在循环/switch内部使用,你写在while对应的else块中,不属于循环体范围,所以触发Break not in loop报错- 变量名使用了Python内置关键字
list,会覆盖内置方法,属于不规范写法 - 调用webbrowser打开表单后没有预留页面加载时间,直接执行点击操作大概率会失效
修正后完整代码
import pyautogui import random import webbrowser import time # 不要用list做变量名,改为自定义名称 option_list = ["Test", "test", "tesT"] # 输入转换为整数类型 total_loop = int(input("请输入循环执行次数:")) current_loop = 0 # 打开表单后预留5秒加载时间,可根据自己的网络情况调整 webbrowser.open('https://docs.google.com/forms/d/1YPhaNvFkncyGuCxIcJ7UhjQDeR55WX20H8cdmPxlSGU/viewform?edit_requested=true', new = 2) time.sleep(5) # 循环条件:当前执行次数小于总次数就继续执行 while current_loop < total_loop: pyautogui.moveTo(700, 360) time.sleep(2) pyautogui.click() item = random.choice(option_list) pyautogui.write(item) time.sleep(1) pyautogui.moveTo(700, 430) time.sleep(1) pyautogui.click() time.sleep(2) pyautogui.moveTo(700, 255) pyautogui.click() # 当前次数自增 current_loop += 1
补充说明
- 代码中的坐标是你本地的屏幕坐标,如果换设备或者浏览器窗口大小改变,需要重新获取对应操作位置的坐标
- 所有sleep的时长可以根据自己的设备响应速度、网络速度灵活调整,避免操作过快页面没加载完成导致失效
内容的提问来源于stack exchange,提问作者WNado
相关产品推荐
相关产品推荐

