博客
关于我
Python+Selenium自动化测试项目实战【建议收藏】
阅读量:796 次
发布时间:2023-03-08

本文共 3029 字,大约阅读时间需要 10 分钟。

自动化测试入门与实战

第1章 自动化测试介绍

自动化测试是一种通过编写自动化测试脚本来减少手工测试工作量的技术。它能够帮助测试人员从繁琑的重复操作中解脱出来,更好地发现产品缺陷。

应用场景:

自动化测试已广泛应用于多个领域。例如,网课平台通过自动化脚本完成课程刷课及答题,高速抢票平台则利用自动化程序定时抢票。这些场景充分展现了自动化测试的巨大价值。


第2章 Python基础

2.1 Python常用快捷键

掌握Python的快捷键能显著提高编码效率。以下是一些实用的快捷键:

  • Ctrl + D:插入多行代码
  • Ctrl + Shift + D:插入块注释
  • Ctrl + Alt + T:快速定位到上一个修改的位置
  • Ctrl + Space:自动完成代码

2.2 函数

函数是编写可维护代码的核心工具。在Python中,函数的定义格式如下:

def function_name(param1, param2):    # 函数体    pass

函数的使用原则:

  • 封装:将代码模块化,便于管理和维护。
  • 抽象:隐藏内部实现细节,暴露接口供外部调用。
  • 参数传递:通过参数传递数据,实现灵活的功能扩展。

变量作用域:

  • 局部变量:仅在函数内部使用,函数结束后自动释放。
  • 全局变量:在整个程序中使用,需谨慎管理以避免冲突。

2.3 面向对象编程

面向对象编程通过类和对象的概念,将实际世界抽象为代码。类包含属性和方法,对象是类的实例化。

类的特性:

  • 属性:类的成员变量。
  • 方法:类的成员函数。

对象的作用:

对象是类的实例化,例如通过 class Cat 定义猫类,可以通过 cat = Cat() 创建一个猫对象。


第3章 元素定位方式

Selenium3.x提供了多种元素定位方式,常见的有:

  • id:find_element_by_id("id")
  • name:find_element_by_name("name")
  • class_name:find_element_by_class_name("class_name")
  • tag_name:find_element_by_tag_name("tag_name")
  • link_text:find_element_by_link_text("链接文本")
  • partial_link_text:find_element_by_partial_link_text("部分链接文本")
  • CSS选择器:find_element_by_css_selector("CSS选择器")
  • XPath:find_element_by_xpath("//路径")

  • 3.2 id选择器示例

    driver.find_element_by_id("kw").send_keys("鹰迅课堂")

    第4章 元素操作方法

    4.1 元素常用操作

    Selenium 提供了丰富的元素操作方法,包括:

    • 点击:click()
    • 输入:send_keys()(支持多种键盘事件)
    • 悬停:hover()
    • 拖拽:drag_and_drop()
    • 右键:context_click()

    第5章 元素等待

    元素等待是自动化测试中的核心概念,主要有以下两种方式:

    5.4 强制等待

    from time import sleepsleep(10)

    优点: 确保代码执行到指定位置。

    缺点: 若元素未加载,仍需等待指定时间。


    5.4 隐式等待

    隐式等待通过设置定位元素时的超时时间来实现。默认检测频率为0.5秒。

    方法:

    driver.implicitly_wait(10)

    特点: 全局生效,若超时抛出 NoSuchElementException。


    5.4 显式等待

    显式等待通过 WebDriverWait 类实现,支持自定义等待策略。

    示例:

    from selenium.webdriver.support.expected_conditions import presence_of_element_locatedfrom selenium.webdriver.WebDriverWait import WebDriverWaitwait = WebDriverWait(driver, 10)element = wait.until(    presence_of_element_located((By.ID, "id")))element.send_keys("输入值")

    优点: 可定制等待策略,若超时抛出 TimeoutException。


    第6章 鼓与键盘操作

    6.2 鼓操作

    Selenium 提供 ActionChains 类来实现复合事件操作。

    示例:

    from selenium.webdriver.common.actions import ActionChainsaction = ActionChains(driver)action.click(ele).perform()

    6.4 键盘操作

    键盘操作通过 Keys 类实现,支持多种按键事件。

    示例:

    from selenium.webdriver.common.keys import Keysdriver.send_keys(Keys.TAB)  # 插入换行键driver.send_keys(Keys.ENTER)  # 插入回车键

    第7章 UnitTest与PyTest

    7.2 PyTest

    PyTest 是 Python 的自动化测试框架,支持 fixtures 和参数化测试。

    特点:

    • 简洁高效:代码简洁,执行速度快。
    • 可扩展性强:支持插件和自定义报告。
    • 异常处理:自动处理异常,支持单元测试和集成测试。

    第8章 项目实战

    8.1 测试用例设计

    确保用例独立运行,遵循模块化设计,便于迭代开发。

    示例代码:

    from selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsdef test_login():    driver = webdriver.Chrome(options=chrome_options)    driver.get("https://www.baidu.com")    driver.find_element_by_id("kw").send_keys("鹰迅课堂")    driver.find_element_by_id("tj_trdsr").click()    driver.quit()

    8.2 自动发送测试邮件

    通过脚本生成测试报告并发送邮件,实现自动化测试流程。

    代码示例:

    import smtplibfrom email.mime.Text import MIMETextdef send_email(report_path):    server = smtplib.SMTP("smtp.qq.com")    server.sendmail("test@example.com", "receiver@example.com", MIMEText(open(report_path).read()))    server.quit()

    这篇文章涵盖了自动化测试的核心知识,结合实际案例,为测试工程师提供了实用的参考。

    转载地址:http://egofk.baihongyu.com/

    你可能感兴趣的文章
    python 堆排序
    查看>>
    python编程方式之一-函数式编程
    查看>>
    python 复习计划
    查看>>
    Python 多处理 apply_async 永远不会在 Windows 7 上返回结果
    查看>>
    Python 多处理 Numpy 随机
    查看>>
    Python 多处理 >= 125 列表永远不会完成
    查看>>
    Python 多处理:在第一个子错误时中止映射
    查看>>
    Python 多处理不断产生 pythonw.exe 进程而不做任何实际工作
    查看>>
    Python 多处理从不加入
    查看>>
    Python 多处理如何优雅地退出?
    查看>>
    Python 多处理将子进程的标准输出重定向到 Tkinter 文本
    查看>>
    Python 多处理库错误(AttributeError:__exit__)
    查看>>
    Python 多处理模块的 .join() 方法到底在做什么?
    查看>>
    python 多线程与GIL
    查看>>
    python 多进程-基础
    查看>>
    python 多进程-进阶-进程池
    查看>>
    python 多进程-进阶-进程间通信之Pipe
    查看>>
    python 多进程-进阶-进程间通信之Queue
    查看>>
    python 如何“否定“value : 如果为真则返回假,如果为假则返回真
    查看>>
    Python 如何在 Web 环境中使用 Matplotlib 进行数据可视化
    查看>>