web 自动化实战
产品分析
测试用例分析
- 用例标题:测试人搜索功能
- 前提条件:进入测试人论坛首页
- 用例步骤:
- 1.点击搜索按钮
- 2.输入搜索关键字
- 3.迪纳基搜索按钮
- 预期结果:
- 实际结果:
编写脚本
from selenium import webdriverfrom selenium.webdriver.common.by import By
# 测试目标
class TestCeshiren:
# 前置条件
def setup(self):
# 创建实例
self.driver = webdriver.Chrome()
# 设置隐式等待
self.driver.implicitly_wait(3)
# 打开目标网页
self.driver.get("https://ceshiren.com/search?expanded=true")
# 后置动作
def teardown(self):
# 每次用例执行完毕,关闭网页与driverchrome服务
self.driver.quit()
# 用例标题
def test_serch(self):
# 定位搜索框,并输入内容
self.driver.find_element(By.XPATH, '//*[@id="ember15"]').send_keys("wl")
# 定位搜索按钮,并点击按钮
self.driver.find_element(By.XPATH,
'//*[@id="ember13"]/div[2]/div[1]/button/span').click()
# 获取查询结果列表第一条文本信息
web_element = self.driver.find_element(By.CSS_SELECTOR, ".topic-title")
# 校验预期结果与实际结果,lower()是转为小写的方法
assert "wl" in web_element.text.lower()
脚本优化
- 前置:setup
- 后置:teardown(): self.driver.quit()
- 每次执行完用例,都会关闭网页和driverchrome进程
- 注意:
- 如果没有quit()动作,会导致大量的driverchrome进程一直存在
- 查看进程:
- Windows 直接查看任务管理器
- Mac:ps -ef | grep chromedriver
- 断言:assert
# 结合 pytest 框架
from selenium import webdriver
from selenium.webdriver.common.by import By
class TestCeshiren:
def setup(self):
'''初始化:前提条件:进入测试人论坛首页'''
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(3)
self.driver.get("https://ceshiren.com/search?expanded=true")
def teardown(self):
# 后置动作
# 每一次用例结束之后都会关闭 driverchrome进程,也会关闭浏览器
# 优化: 1. 没有前置和后置的处理动作 2. driver启动完成后没有quit()
# 如果没有queit()动作,会导致大量的driverchrome进程一致存在
# Windows查看任务管理器,mac使用 ps -ef | grep chromedriver
self.driver.quit()
def test_serch(self):
'''
用例步骤: * 1.点击搜索按钮 * 2.输入搜索关键字 * 3.点击搜索按钮
预期结果: * 1.搜索成功 * 2.搜索结果列表包含关键字
:return:
'''
# 定位搜索框,并输入内容
self.driver.find_element(By.XPATH, '//*[@id="ember15"]').send_keys("wl")
# 定位到搜索框,点击查询按钮
self.driver.find_element(By.XPATH, '//*[@id="ember13"]/div[2]/div[1]/button/span').click()
# 断言:校验结果
# 获取内容第一种方式
web_element = self.driver.find_element(By.CSS_SELECTOR, ".topic-title")
print(f'web_element={web_element.text}')
# 获取文本实际结果,并断言结果包含关键字
# 第二种:把获取到的内容和预期结果统一,使用 .lower就可以使字母转为小写
assert "wl" in web_element.text.lower()