Python~selenium填写问卷星

在学习Python 的过程中学习到selenium这个模块。

Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
Selenium 测试工具直接操控浏览器,就像真正的用户在操作一样。Selenium 可以根据的指令,让浏览器自动加载页面,获取需要的数据。

安装Selenium模块命令:pip install selenium

环境:Python 3.7
浏览器:Chrome
浏览器驱动地址(国内)

ps:根据自己的浏览器版本,下载对应的浏览器驱动。

实战测试

需求:填写问卷星。随机填写题目。
链接问卷星链接地址

该问卷星是自己创建,用来练习selenium。一共四个题,单选,多选,排序,以及填空题。
导入测试所需要用的模块,创建一个实例。

from selenium import webdriver
import random
drive = webdriver.Chrome()
drive.get('https://www.wjx.cn/jq/58914455.aspx')

1.

首先,通过浏览器的开发者工具找到元素所在的位置。如果下图,4个li标签便是对应的4个按钮。找出li标签位置,这里我使用的是CSS选择器提取。
在这里插入图片描述
通过浏览器的开发者工具,获取到元素位置

# 会随机选择四个按钮中的其中一个。这里用到了Python内置的random模块
first_question = drive.find_elements_by_css_selector('#divquestion1 ul li')
first_question[random.randint(0,len(first_question)-1)].click()

2.

在这里插入图片描述

    second_question = drive.find_elements_by_css_selector('#divquestion2 ul li')
    length = len(second_question)
    # 二元表达式
    choice = [x for x in range(length)]
    # 使用random模块,随机选择两个选项
    choice = random.choices(choice,k=int(length / 2))
    for i in choice:
        second_question[i].click()

3.

在这里插入图片描述

third_question = drive.find_elements_by_css_selector('#divquestion3 ul li')
    length = [x for x in range(len(third_question))]
    # 将列表length序列打乱
    random.shuffle(length)
    for i in length:
        third_question[i].click()

4.

在这里插入图片描述

fourth_question = drive.find_element_by_css_selector('#q4')
fourth_question.send_keys('hello world')

完整代码:

from selenium import webdriver
import random

drive = webdriver.Chrome()
drive.get('https://www.wjx.cn/jq/58914455.aspx')

# 这里将每一题定义成一个函数
def one():
    """第一题"""
    first_question = drive.find_elements_by_css_selector('#divquestion1 ul li')
    first_question[random.randint(0, len(first_question) - 1)].click()

def two():
    """第二题"""
    second_question = drive.find_elements_by_css_selector('#divquestion2 ul li')
    length = len(second_question)
    choice = [x for x in range(length)]
    choice = random.choices(choice, k=int(length / 2))
    for i in choice:
        second_question[i].click()

def three():
    """第三题"""
    third_question = drive.find_elements_by_css_selector('#divquestion3 ul li')
    length = [x for x in range(len(third_question))]
    random.shuffle(length)
    for i in length:
        third_question[i].click()

def four():
    """第四题"""
    fourth_question = drive.find_element_by_css_selector('#q4')
    fourth_question.send_keys('hello world')
    
# 阻塞
input()

drive.quit()

注意事项
浏览器的驱动必须和代码文件放在同一目录下。如果放在不同目录则需要加驱动所在的绝对路径。如放在D盘的python文件夹下,创建实例代码为:drive = webdriver.Chrome(executable_path='D:\\python\\chromedriver_80.0.3987.16.exe')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值