Web 自动化测试实战
Web 自动化测试实战
学习体系
- 掌握 CSS 定位方法。
- 掌握多窗口的切换方式。
- 掌握日志、截图的记录方法。
知识模块
- L2. 元素高级定位和自动化脚本编写
实战需求
实战 1:职位搜索功能实战
地址:https://jobs.bytedance.com/
- 打开招聘网页。
- 输入职位关键词:测试工程师。
- 点击搜索按钮。
- 断言出现的第一个标题内容包含搜索的关键词:测试工程师。
实战 2:职位搜索详情功能实战
地址:https://jobs.bytedance.com/
- 打开招聘网页。
- 输入职位关键词:"测试工程师"。
- 点击搜索按钮。
- 点击一个职位进入职位详情页面
- 断言职位详情包含搜索的关键词信息:"测试"。
实战 3:测试人社区高级搜索实战
地址:https://ceshiren.com/
要求:
- 使用
css
定位。 - 添加日志
- 添加搜索结果截图。
步骤:
- 打开测试人论坛。
- 点击搜索按钮。
- 输入关键字:ChromeDriver。
- 点击高级搜索按钮。
- 点击高级筛选器。
- 选择分类为"提问区"、话题为"开放"、排序为"赞最多"。
- 点击搜索按钮。
- 断言出现的第一个标题或简介文本内容包含 chromedriver。
注意:筛选项只能点击,不能在输入框输入
相关知识点
教程地址 | 教程视频地址 | 时间范围 |
---|---|---|
高级定位-css | 高级定位-css | 基础使用 0:00-25:35 关系定位 25:35-37:45 |
多窗口处理 | 多窗口处理 | 0:00-18:10 |
自动化关键数据记录 | 自动化关键数据记录 | 0:00-19:33 |
实战代码
1. 职位搜索功能实战
def test_job_title():
# 初始化浏览器
driver = webdriver.Chrome()
# 最大化窗口
driver.maximize_window()
# 设置隐式等待
driver.implicitly_wait(15)
# 进入字节招聘网站
driver.get("https://jobs.bytedance.com/")
# 点击搜索框,输入搜索的关键词
driver.find_element(By.CSS_SELECTOR, '.atsx-input.atsx-input-lg.search-input').send_keys("测试工程师")
# 点击搜索按钮
driver.find_element(By.CSS_SELECTOR, '.atsx-btn.sofiaBold.atsx-btn-primary.atsx-btn-circle').click()
# 等待搜索结果出现
sleep(5)
# 获取职位名称
job_ele = driver.find_element(By.CSS_SELECTOR, '.positionItem-title-text')
# 断言搜索的关键词在标题当中
assert "测试工程师" in job_ele.text
2. 职位搜索详情功能实战
def test_job_desc():
# 初始化浏览器
driver = webdriver.Chrome()
# 最大化窗口
driver.maximize_window()
# 设置隐式等待
driver.implicitly_wait(15)
# 进入字节招聘网站
driver.get("https://jobs.bytedance.com/")
# 点击搜索框
driver.find_element(By.CSS_SELECTOR, '.atsx-input.atsx-input-lg.search-input').send_keys("测试工程师")
# 点击搜索按钮
driver.find_element(By.CSS_SELECTOR, '.atsx-btn.sofiaBold.atsx-btn-primary.atsx-btn-circle').click()
# 等待搜索结果出现
sleep(5)
# 点击 进入职位详情
driver.find_element(By.CSS_SELECTOR, '.positionItem-title-text').click()
sleep(2)
windows = driver.window_handles
driver.switch_to.window(windows[-1])
# 进入 职位详情
job_des_eles = driver.find_elements(By.CSS_SELECTOR, '.block-content')
# 将职位描述信息存进列表
job_desc = []
for i in job_des_eles:
job_desc.append(i.text)
# 断言 测试字样 在职位描述当中
assert any("测试" in item for item in job_desc), job_desc
3. 测试人社区高级搜索实战
def test_ceshiren_search():
# 初始化 driver
driver = webdriver.Chrome()
# 打开测试人网页
driver.get('https://ceshiren.com/')
driver.implicitly_wait(15)
driver.maximize_window()
# 点击 搜索 放大镜图标
driver.find_element(By.ID, 'search-button').click()
# 输入关键字
driver.find_element(By.ID, 'search-term').send_keys('ChromeDriver')
logger.info('输入的关键词为:ChromeDriver')
# 点击高级搜索按钮
driver.find_element(By.CLASS_NAME, 'show-advanced-search').click()
sleep(3)
driver.find_element(By.ID, 'search-in-category-header').click()
driver.find_element(By.CSS_SELECTOR, '.select-kit-collection [title="提问区"]').click()
# 选择话题-开放
driver.find_element(By.ID, 'search-status-options-header').click()
driver.find_element(By.CSS_SELECTOR, '.select-kit-collection [title="开放"]').click()
# 选择排序-赞最多
driver.find_element(By.ID, 'search-sort-by-header').click()
driver.find_element(By.CSS_SELECTOR, '.select-kit-collection [title="赞最多"]').click()
# 点击 搜索 按钮
driver.find_element(By.CSS_SELECTOR, '.search-bar [aria-label="搜索"]').click()
# 断言第一个搜索内容
sleep(3)
search_rs = driver.find_element(By.CSS_SELECTOR, '.fps-result-entries .blurb.container')
# 断言 chromedriver 在第一个搜索结果的文本中
driver.save_screenshot('./image/搜索结果图.png')
res = search_rs.text.lower()
logger.info(f'第一个搜索结果的标题文本为:{res}')
assert "chromedriver" in res
总结
- 掌握 CSS 表达式。
- 掌握 web 自动化常见场景处理方式。
- 掌握关键数据记录方法。