Python 测开28期 - WL - 学习笔记 - web 自动化 Lv1 实战

web 自动化实战

产品分析

测试用例分析

  • 用例标题:测试人搜索功能
  • 前提条件:进入测试人论坛首页
  • 用例步骤:
    • 1.点击搜索按钮
    • 2.输入搜索关键字
    • 3.迪纳基搜索按钮
  • 预期结果:
    • 1.搜索成功
    • 2.搜索结果列表包含关键字
  • 实际结果:

编写脚本

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
    • 初始化浏览器驱动
      • 实例化web对象
      • 设置隐式等待时长
      • 打开目标网页
  • 后置:teardown(): self.driver.quit()
    • 每次执行完用例,都会关闭网页和driverchrome进程
    • 注意:
      • 如果没有quit()动作,会导致大量的driverchrome进程一直存在
      • 查看进程:
      • Windows 直接查看任务管理器
      • Mac:ps -ef | grep chromedriver
  • 断言:assert
    • 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()