在学习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')
。