课堂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 == "申请成功!"