(问卷星)自动填写问卷星脚本python、selenium

这篇具有很好参考价值的文章主要介绍了(问卷星)自动填写问卷星脚本python、selenium。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

该脚本只解决了单选,多选以及量表和矩阵量表,别的题目都没有改到,其次,如果多选有其他这个选项请修改代码,或者有最多和最少选择项规定,请修改源码。文章来源地址https://www.toymoban.com/news/detail-507009.html

from selenium import webdriver
import random
import time
import numpy as np
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options

def get_ele_time(driver,time,func):
    WebDriverWait(driver,time).until(func)
def auto_write():
    # 防止被浏览器识别为脚本
    # browser = webdriver.Chrome()
    # browser.get("https://www.wjx.cn/vm/YsK8J1l.aspx")
    chrome_options = Options()
    chrome_options.add_argument("--disable-blink-features=AutomationControlled")
    chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])

    # chrome_options.add_argument("--headless")
    # chrome_options.add_argument('--disable-gpu')
    chrome_options.add_argument(
        'user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36')

    driver = Chrome(options=chrome_options)
    driver.get('https://www.wjx.cn/vm/PXD8Zlr.aspx')


    # 获取到所有题目的选项
    rank = driver.find_elements_by_class_name("field.ui-field-contain")
    for i in range(len(rank)):
        type_q = rank[i].get_attribute("type")
        # 单选
        if(type_q == '3'):
            check = rank[i].find_elements_by_class_name("ui-radio")
            mins = random.randrange(0,len(check)-1)
            check[mins].click()
        #     多选
        if(type_q == '4'):
            ui_check = rank[i].find_elements_by_class_name("label")
            length = len(ui_check)

            for k in range(len(ui_check)):
                # 如果多选中填空题选项不叫其他,请更改此行代码
                if ui_check[k].text == '其他':
                    length = length-1
            # 如果多选规定选择的项数请修改下面的
            random_choice = np.random.randint(1,length-1,size=random.randint(1,length))
            for z in list(set(random_choice)):
                ui_check[z].click()
        #         量表
        if(type_q == '5'):
            lb_data = rank[i].find_elements_by_class_name("td")
            lb_data[random.randint(0,len(lb_data)-1)].click()
        #     矩阵量表
        if(type_q == '6'):
            # print(rank[i].text)

            mat_data = rank[i].find_elements_by_css_selector("tr[tp=d]")
            # mat_data = rank[i].find_elements_by_xpath("./tbody/tr[@tp=\"d\"]")
            for s in range(0,len(mat_data)):
                single_mat_row = mat_data[s].find_elements_by_class_name('rate-off.rate-offlarge')
                # print(len(single_mat_row))
                single_mat_row[random.randint(0,len(single_mat_row)-1)].click()

    driver.find_element_by_id("ctlNext").click()
    # 消除确认弹窗
    time.sleep(random.randint(2, 5))
    js = 'document.getElementById("alert_box").style.display="none";'
    driver.execute_script(js)

    # 点智能验证提示框,进行智能验证
    driver.find_element_by_xpath("//div[@id='rectMask']").click()

    #
    #
    time.sleep(random.randint(2, 5))
    driver.quit()  # 运行完毕自动关闭浏览器


    # driver.quit()

if __name__ == '__main__':
    for i in range(0,200):
        print("正在填写第{}份问卷".format(i+1))
        auto_write()
        print("第{}份问卷已经填写完成".format(i+1))
        time.sleep(random.randint(1,4))

到了这里,关于(问卷星)自动填写问卷星脚本python、selenium的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python使用Selenium自动实现表单填写之龙年纪念币预约

    声明 :本文只做技术交流,不可用代码为商业用途,文末有源码下载,已测试可用。 Part 1 配置文件改写(源码 有详细的注释说明 读取配置文件,自己组数据库,录入信息 配置文件 Part 2 主函数 每一期的xpath路径都不一样 所以需要提前去网站获取 新的 Xpath 具体方法如下

    2024年02月01日
    浏览(52)
  • Python 自动获取大批量excel数据并填写到网页表单(pandas;selenium)

    自动获取大批量excel数据并填写到网页表单 部分网页获取下拉列表点击的方式有所差异 这个请根据网页源码自做选择 一定要学会使用IPDB调试工具 太好用了!!!! 可能需要pip update一下 看提示 很好解决 没有报错最好啦 Python真是太好用了 办公利器啊!!!!

    2024年02月12日
    浏览(40)
  • Python使用Selenium自动实现表单填写之龙年纪念币预约(附源码,源码有注释解析,已测试可用

    声明 :本文只做技术交流,不可用代码为商业用途,文末有源码下载,已测试可用。 Part 1 配置文件改写(源码 有详细的注释说明 读取配置文件,自己组数据库,录入信息 配置文件 Part 2 主函数 每一期的xpath路径都不一样 所以需要提前去网站获取 新的 Xpath 具体方法如下

    2024年02月01日
    浏览(24)
  • Temper monkey(油猴)实现问卷星填写

    // ==UserScript== // @name         问卷星3.0 // @namespace    http://tampermonkey.net/ // @version      0.1 // @description  try to take over the world! // @author       YYdny // @match        https://www.wjx.cn/vm/* // @icon         https://www.google.com/s2/favicons?sz=64domain=csdn.net // @grant        none // ==/UserScript== (

    2024年02月04日
    浏览(25)
  • Selenium自动填写验证码(偏小白版本OCR)

    我直接 上代码 主要难点就是安装Tesseract-OCR了,去GItHub上搜一搜,去搜索引擎上搜一搜就能下载到了  然后就是使用tesseract_cmd 指定你的tesseract.exe的位置 Tesseract就是一个别人开发好的用来识别验证码的工具,下载好之后是为了给Python调用的 而pytesseract这个库就是为了调用Te

    2024年04月16日
    浏览(27)
  • selenium(4)-------自动化测试脚本(python)

    webdriverAPI 一)定位元素的方式,必问 1.1)id来定位元素,前提是元素必须具有id属性,因为有的元素是没有id的 1.2)name,元素必须有name,并且必须全局唯一 1.3)tagname,元素是一定有的,但是必须全局唯一才可以定位到元素 1.4)classname,class的名字,必须全局唯一 1.5)link_text,通过

    2024年02月02日
    浏览(40)
  • selenium(7)----自动化测试脚本(python版本)

    1)HTML报告的生成:测试报告最好要生成在一个特殊的目录下面 1)在python的lib文件下面添加文件是HTMLTestRunner.py文件: self就是当前类中的实例 2)HTML报告的生成步骤: 2.1)解决HTML文件存放的问题:创建一个文件夹 2.2)HTML报告命名问题,如何进行动态命名,每一次生成的文件名称如何不

    2024年01月21日
    浏览(32)
  • python selenium 模拟浏览器自动操作抢购脚本

    每逢秒杀,都在遗憾网速和手速慢没能抢购到商品吧。 手写一个脚本,让程序帮你抢,抢到的概率会大大提升。 废话不多说,直接上代码。 本实例以华为官网抢购手机为例

    2024年02月09日
    浏览(28)
  • 使用Python+selenium实现第一个自动化测试脚本

    这篇文章主要介绍了使用Python+selenium实现第一个自动化测试脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 最近在学web自动化,记录一下学习过程。 此处我选用python3.6+selenium3.0,均用

    2024年02月03日
    浏览(40)
  • Selenium+Python自动化脚本环境搭建的全过程

    * 本文仅介绍环境的搭建,不包含任何脚本编写教程。 先整体说一下需要用到工具 1、Python环境(包括pip) 2、谷歌浏览器(包括对应的WebDriver) 详细步骤: 1、下载安装包 Python Releases for Windows | Python.org   下载完成过后,打开进行安装, 先把下面的add path打钩 ,然后一直下

    2024年01月17日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包