Skip to content

Web 自动化测试实战

Web 自动化测试实战

学习体系

  1. 掌握 CSS 定位方法。
  2. 掌握多窗口的切换方式。
  3. 掌握日志、截图的记录方法。

知识模块

  • L2. 元素高级定位和自动化脚本编写

实战需求

实战 1:职位搜索功能实战

地址:https://jobs.bytedance.com/

  1. 打开招聘网页。
  2. 输入职位关键词:测试工程师。
  3. 点击搜索按钮。
  4. 断言出现的第一个标题内容包含搜索的关键词:测试工程师。

实战 2:职位搜索详情功能实战

地址:https://jobs.bytedance.com/

  1. 打开招聘网页。
  2. 输入职位关键词:"测试工程师"。
  3. 点击搜索按钮。
  4. 点击一个职位进入职位详情页面
  5. 断言职位详情包含搜索的关键词信息:"测试"。

实战 3:测试人社区高级搜索实战

地址:https://ceshiren.com/

要求:

  • 使用 css 定位。
  • 添加日志
  • 添加搜索结果截图。

步骤:

  1. 打开测试人论坛。
  2. 点击搜索按钮。
  3. 输入关键字:ChromeDriver。
  4. 点击高级搜索按钮。
  5. 点击高级筛选器。
  6. 选择分类为"提问区"、话题为"开放"、排序为"赞最多"。
  7. 点击搜索按钮。
  8. 断言出现的第一个标题或简介文本内容包含 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 自动化常见场景处理方式。
  • 掌握关键数据记录方法。