0%

selenium自动化操作问卷星

问卷星的自动化操作

前言

身边的很多同学需要填写问卷星,有很多需要刷任务的操作,等等类似场景,可以使用selenium实现

以下是本篇文章正文内容,下面案例可供参考

一、selenium是什么?

Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。

二、代码实现

参照了其他同学的代码实现了自动化的操作。直接上代码吧!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
from selenium import webdriver
import time
import random

# 定义方法
def run():
# 创建一个浏览器对象
browser = webdriver.Edge(executable_path='msedgedriver.exe')
# 请求该地址
browser.get("https://www.wjx.cn/jq/80378706.aspx")

# 问题1的点击
randomId = random.randint(1, 2) # 随机数 随机点击按钮
js = "document.getElementById(\"q1_" + str(randomId) + "\").click()"
# 使用js实现点击的效果
browser.execute_script(js)
# 延时 太快会被检测是脚本
time.sleep(1)

# 问题2
randomId = random.randint(1, 4) # 随机数,四个多选框 随机点击
js = "document.getElementById(\"q2_" + str(randomId) + "\").click()"
# 拼接字符串的方式 js找到对应id 点击按钮
browser.execute_script(js)
# 延时
time.sleep(1)

# 问题3
block = ["商学院", "计科院", "电气院"] # 随机输入内容
randomId = random.randint(0, 2) # 随机数
# 输入内容
browser.find_element_by_id("q3").send_keys(block[randomId])
# 延时
time.sleep(1)

# 问题4
block = ["会计", "网工", "电气"] # 随机输入内容
browser.find_element_by_id("q4").send_keys(block[randomId])
# 延时
time.sleep(1)

# 问题5
randomId = random.randint(1, 5) # 随机数
for i in range(1, randomId + 1): # 循环 实现多选效果
randomId1 = random.randint(1, 5)
# 两种js实现方式
js = "document.getElementById(\"q5_" + str(randomId1) + "\").checked = true"
browser.execute_script(js)
js = "document.getElementById(\"q5_" + str(randomId1) + "\").click()"
browser.execute_script(js)
# 延时
time.sleep(1)

# 问题6
randomId = random.randint(1, 3) # 参照问题5
for i in range(1, randomId + 1):
randomId1 = random.randint(1, 3)
js = "document.getElementById(\"q6_" + str(randomId1) + "\").checked = true"
browser.execute_script(js)
js = "document.getElementById(\"q6_" + str(randomId1) + "\").click()"
browser.execute_script(js)
time.sleep(1)

# 问题7
randomId = random.randint(1, 3) # 参照问题5
for i in range(1, randomId + 1):
randomId1 = random.randint(1, 3)
js = "document.getElementById(\"q7_" + str(randomId1) + "\").checked = true"
browser.execute_script(js)
js = "document.getElementById(\"q7_" + str(randomId1) + "\").click()"
browser.execute_script(js)
time.sleep(1)

# 问题8
randomId = random.randint(1, 2) # 单选
js = "document.getElementById(\"q8_" + str(randomId) + "\").click()"
browser.execute_script(js)
time.sleep(1)

# 问题9
randomId = random.randint(1, 2) # 单选
js = "document.getElementById(\"q9_" + str(randomId) + "\").click()"
browser.execute_script(js)
time.sleep(1)

# 问题10
randomId = random.randint(1, 3) # 单选
js = "document.getElementById(\"q10_" + str(randomId) + "\").click()"
browser.execute_script(js)
time.sleep(1)

# 问题12
if randomId == 2:
randomId2 = random.randint(1, 6) # 多选
for i in range(1, randomId2 + 1): # 循环实现
randomId1 = random.randint(1, 6)
# 两种js点击方法
js = "document.getElementById(\"q12_" + str(randomId1) + "\").checked = true"
browser.execute_script(js)
js = "document.getElementById(\"q12_" + str(randomId1) + "\").click()"
browser.execute_script(js)
# 延时
time.sleep(1)
# 问题11
else:
randomId2 = random.randint(1, 7) # 参照上一个
for i in range(1, randomId2 + 1):
randomId1 = random.randint(1, 7)
js = "document.getElementById(\"q11_" + str(randomId1) + "\").checked = true"
browser.execute_script(js)
js = "document.getElementById(\"q11_" + str(randomId1) + "\").click()"
browser.execute_script(js)
time.sleep(1)

# 问题13
randomId = random.randint(1, 3) # 单选
js = "document.getElementById(\"q13_" + str(randomId) + "\").click()"
browser.execute_script(js)
time.sleep(1)

# 问题14
block = ["线上教学太生硬", "线上教学不太好", "没有不足之处,挺好的"] # 随机输入
randomId = random.randint(0, 2)
browser.find_element_by_id("q14").send_keys(block[randomId])
time.sleep(1)

# 问题15
block = ["希望作业能多一点", "如果可以,希望老师能讲课讲清楚一些", "建议取消线上考试"] # 随机输入
randomId = random.randint(0, 2)
browser.find_element_by_id("q15").send_keys(block[randomId])
time.sleep(1)

# submit
js = "document.getElementById(\"submit_button\").click()" # 点击提交按钮
browser.execute_script(js)

browser.quit() # 运行完毕自动关闭浏览器


if __name__ == "__main__":
while True:
run()
time.sleep(10) # 避免提交过快 会出现验证


总结

以上就是今天要讲的内容,本文仅仅简单介绍了selenium的使用,selenium还可以帮我们做很多事情,比如模拟登录,爬取某宝的宝贝数据等等。以后我们再见!
注:案例仅供学习

本文标题:selenium自动化操作问卷星

文章作者:fanchen

发布时间:2021年01月16日 - 16:42:19

最后更新:2021年02月05日 - 17:55:54

原始链接:http://88fanchen.github.io/posts/f027b801/

许可协议:署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。