20230827 web 自动化测试 workshop

课堂PPT

PPT地址

PO 封装思路

示例代码

线性代码

"""
__author__ = '霍格沃兹测试开发学社'
__desc__ = '更多测试开发技术探讨,请访问:https://ceshiren.com/t/topic/15860'
"""
import time

import yaml
from selenium import webdriver
from selenium.webdriver.common.by import By


def change_handle(driver):
    '''
    切换句柄
    :return:
    '''
    # 切换页面
    # 获取浏览器中所有打开页面的句柄
    handles = driver.window_handles
    print(f"当前所有句柄:{handles}")
    # 切换到最后一个句柄中
    driver.switch_to.window(handles[-1])
    print("切换句柄完成")

class TestZhaopin:

    def setup(self):
        '''
        每个测试方法执行之前,会调用 setup 当中的逻辑
        :return:
        '''
        # 打开浏览器,进入一个空白页面
        self.driver = webdriver.Chrome()
        # 设置全局隐式等待
        self.driver.implicitly_wait(5)
        # 最大化窗口
        self.driver.maximize_window()

    # def teardown(self):
    #     '''
    #     每个测试方法执行之后,会调用 teardown 当中的逻辑
    #     :return:
    #     '''
    #     self.driver.quit()

    def test_login(self):
        '''
        完成登录
        :return:
        '''
        url = "https://passport.zhaopin.com/login?bkUrl=%2F%2Fi.zhaopin.com%2Fblank%3Fhttps%3A%2F%2Fwww.zhaopin.com%3FvalidateCampus%3D"
        # 打开登录页面
        self.driver.get(url)
        # 点击扫码登录
        self.driver.find_element(By.CLASS_NAME, "zppp-panel-normal-bar__img").click()
        time.sleep(20)
        # 进入登录首页
        # 获取登录之后的  cookie
        cookie = self.driver.get_cookies()
        print(cookie)
        with open("cookie.yaml", "w") as f:
            yaml.safe_dump(cookie, f)


    def test_deliver_resume(self):
        '''
        测试步骤
        1 进入首页
        2 搜索框中输入搜索关键词
        3 点击搜索按钮
        4 进入搜索结果页,点击第一个职位
        5 进入职位详情页,点击申请职位按钮
        6 获取投递结果,完成断言
        :return:
        '''
        # 模拟登录操作
        url = "https://passport.zhaopin.com/login?bkUrl=%2F%2Fi.zhaopin.com%2Fblank%3Fhttps%3A%2F%2Fwww.zhaopin.com%3FvalidateCampus%3D"
        # 打开登录页面
        self.driver.get(url)
        # 点击扫码登录
        self.driver.find_element(By.CLASS_NAME, "zppp-panel-normal-bar__img").click()
        # 读取 cookie.yaml 中的 cookie 信息,完成登录
        time.sleep(1)
        with open("cookie.yaml", "r") as f:
            cookie = yaml.safe_load(f)
        print(f"读取出来的 cookie 信息 为 {cookie}")
        # 添加 cookie
        for c in cookie:
            try:
                self.driver.add_cookie(c)
            except Exception as e:
                print(e)
        time.sleep(3)
        # self.driver.refresh()
        # 进入登录之后的首页
        url = "https://i.zhaopin.com/"
        self.driver.get(url)
        # 搜索框中输入搜索关键词
        self.driver.find_element(By.XPATH, "//*[@class='a-input__native']").send_keys("测试开发")
        # 点击搜索按钮
        self.driver.find_element(By.XPATH, "//*[@class='a-button search-box__button zp-iconfont  zp-search a--bordered a--filled']").click()
        # 切换页面
        change_handle(self.driver)
        # # 获取浏览器中所有打开页面的句柄
        # handles = self.driver.window_handles
        # print(handles)
        # # 切换到最后一个句柄中
        # self.driver.switch_to.window(handles[-1])
        # ------搜索结果页------
        # 获取职位列表中的第一个元素
        self.driver.find_element(By.XPATH, "//*[@class='iteminfo__line1__jobname__name']").click()
        # 切换页面
        change_handle(self.driver)
        # -----职位详情页------
        # 点击申请职位按钮
        self.driver.find_element(By.XPATH, "//*[@class='a-button a--bordered a--filled']").click()
        time.sleep(3)
        # 切换页面
        change_handle(self.driver)
        # -------申请结果页-----
        # 获取申请结果信息
        result = self.driver.find_element(By.XPATH, "//*[@class='deliver-dialog__box__title']").text
        # 断言
        assert result == "申请成功!"