用python实现问卷星自动化填写
(PS:可以当作碎碎念)实现问卷星自动化问卷星填写可以批量处理大量问卷,用以节省人工填写时间,适用于重复的答案唯一的问卷填写、教学演示等场景。通过Python程序控制浏览器自动填写,能够高效完成自动化操作,减少人为操作和时间上的消耗。所需功能详解2.1 输入框当出现姓名输入框时,使用WebDriverWait捕获,并且在后续输入相应数据2.2 单选提交项目所需掌握的技能和知识关于浏览器驱动有两种方
·
目的
(PS:可以当作碎碎念)实现问卷星自动化问卷星填写可以批量处理大量问卷,用以节省人工填写时间,适用于重复的答案唯一的问卷填写、教学演示等场景。通过Python程序控制浏览器自动填写,能够高效完成自动化操作,减少人为操作和时间上的消耗。
功能及其流程设计
- 自动打开页面
- 自动填写表单:根据预设数据自动填充问卷星的选项(单选、文本输入等)
- 批量提交:支持循环填写并提交多份问卷
实现过程
- 安装Selenium依赖,在指定文件夹下使用命令:pip install selenium
- 下载对应浏览器驱动
执行本次程序是在Edge浏览器下完成的,所以在在此之前请下载Edge浏览器驱动:
2.1 打开Edge浏览器,查看浏览器版本
到这里下载Edge驱动(Edge驱动链接),点击进去找到对应版本号
一般这里都会出现最新的版本,闭眼点击X64下载即可(一般的电脑都是64位。如有个别32位的请选择x86),如果不行可以再往下滑,找到对应版本进行下载。
下载好是一个压缩包,直接解压即可。解压完成后,其中有个后缀为exe的文件,可以放在任意的一个文件夹,只要能找到即可,我这里选择的是放在解压后的文件夹下。 - 在文件夹下创建auto.py文件(用来写代码)
示例功能代码
- 导入的库及其功能
from selenium import webdriver # 控制浏览器
from selenium.webdriver.edge.service import Service as EdgeService # 微软浏览器驱动
from selenium.webdriver.common.by import By # 定位元素
from selenium.webdriver.support.ui import WebDriverWait # 等待元素出现
from selenium.webdriver.support import expected_conditions as EC # 等待条件
- 所需功能详解
2.1 输入框
name_field = WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located((By.ID, "q1_0"))
)
name_field.send_keys(self.basic_info["姓名"])
当出现姓名输入框时,使用WebDriverWait捕获,并且在后续输入相应数据
2.2 单选
question_element = WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located((By.XPATH, question_xpath))
)
options = question_element.find_elements(By.CSS_SELECTOR, '.ui-controlgroup.column1 .ui-radio .label')
found = False
for option in options:
if answer in option.text:
option.click()
found = True
break
- 提交
def submit(self):
try:
# 查找提交按钮并点击
submit_button = WebDriverWait(self.driver, 10).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, '.submitbtn'))
)
submit_button.click()
print("问卷已提交")
time.sleep(3)
except Exception as e:
print(f"提交问卷时出错: {str(e)}")
项目所需掌握的技能和知识
- 关于浏览器驱动
有两种方法设置这个浏览器驱动
1.1 静态设置浏览器驱动
设置下载好的驱动位置,如edge_driver_path = "D:/edgedriver_win64/msedgedriver.exe"
通过设置service和driver来加载浏览器驱动service = EdgeService(executable_path=edge_driver_path) driver = webdriver.Edge(service=service)
1.2 动态设置浏览器驱动
需要下载webdriver_manager,使用命令pip install webdriver_manager
在代码中导入webdriver_manager,以及对应浏览器的manger,如edge的是from webdriver_manager.microsoft import EdgeChromiumDriverManager
然后在其中定义自动下载和配置 EdgeDriver,driver = webdriver.Edge(EdgeChromiumDriverManager().install())
- 关于WebDriverWait
完整参数如下WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)
其中的含义是,
driver:浏览器驱动
timeout:最长超时时间,默认以秒为单位
poll_frequency:检测的间隔步长,默认为0.5s
ignored_exceptions:超时后的抛出的异常信息,默认抛出NoSuchElementExeception异常。 - 关于selenium中一个模块expected_conditions,简称EC
详情可以看Selenium中的EC模块 - 关于定位元素
需要学习xpath,详情可以看python爬虫:使用xpath基础+实例
总结
该项目为了实现自动化填写问卷星,使用到了python中的selenium库;然而还需要学习xpath来了解如何定位到某个元素;不过还是需要学习一下html,可以更加容易理解定位元素的要领。写下这篇文章也是为了记录下学习的心路历程,希望对各位看官有所帮助,创作不易,望各位看官给赞再走!
更多推荐
所有评论(0)