前言
这里使用html + thymeleaf做了一个简单的登录页面,后台使用java做了一个伪登录功能,通过python编写自动登录的脚本,目的是为了通过这个简单的demo,来熟悉selenium库的使用,实现通过python + selenium编写自动运行的用于测试界面功能的脚本。
环境准备
系统和语言环境准备
系统 | windows |
登录功能自动测试脚本 | python 3.6.4 |
用于测试的前端 | html + js(layui 、thymeleaf) |
用于伪登录功能的后端 | java1.8 |
其他环境
python操作前端代码的库与驱动
安装webdriver
- 准备工作
- 驱动的下载地址
- 这个是chrome的driver,找到对应版本下载,如果是firefox需要其他的driver
- 解压chromedriver_win32(70-73).zip,对应chrom70-73版本
- 将解压后的chromedriver.exe放至chrom的安装目录下(可通过任务管理器右键打开文件位置)
- 配置环境变量
- 将chrom的根目录配置在path下
安装selenium-3.141.0
- cmd进入解压后的文件夹,执行
python setup.py install
脚本编写
这里的开发工具使用的是PyCharm
- 提取码zvle
demo:
import json
import logging.config
import unittest
import time
from selenium import webdriver
# 登录功能自动测试脚本
class LoginTest (unittest.TestCase):
browser = None
url = None
# 加载日志配置文件
logging.config.fileConfig('logger.conf')
logger = logging.getLogger('login_test')
def test_login(self):
# 打开json配置文件
with open('../conf.json', 'r') as conf:
# 加载配置
configure = json.load(conf)
webd = configure['webdriver']
self.url = configure['url']
self.username = configure['username']
self.pwd = configure['password']
if not self.browser:
self.browser = webdriver.Chrome(executable_path=webd)
# 访问url对应的网址
self.browser.get(self.url)
# 睡眠5s,等待页面响应,这里睡眠等待也可以替换成其他方式,这里暂不使用
time.sleep(5)
# 找到id为L_email的元素,填充对应的值
self.browser.find_element_by_id("L_email").send_keys(self.username)
self.browser.find_element_by_id("L_pass").send_keys(self.pwd)
# 找到id为submitBotton的按钮(登录),点击
self.browser.find_element_by_id("submitBotton").click()
time.sleep(10)
# 退出浏览器
self.browser.quit()
if __name__ == '__main__':
unittest.main()
说明:
- 加载驱动
self.browser = webdriver.Chrome(executable_path=webd)
webd通过读取配置文件的json来获取,是上述安装配置的webdriver路径 - 访问网址
self.browser.get(self.url)
- 通过id获取元素
self.browser.find_element_by_id("L_email")
这里的元素是页面的html元素,需要指定id,还可以根据class等方式获取,但不能根据多个class获取元素 - 对于获取到的元素的操作
self.browser.find_element_by_id("L_pass").send_keys(self.pwd)
这个是为input输入值self.browser.find_element_by_id("submitBotton").click()
这个是点击按钮 - 退出浏览器
self.browser.quit()
以上是对于selenium库的简单应用,可以根据自己的需求编写适合的脚本来进行自动测试