当前位置: 首页 > news >正文

web自动化测试-python+selenium+unitest

文章目录

      • Web自动化测试工具
        • 1. 主流的Web自动化测试工具
        • 2. Selenium家族史
      • Web自动化测试环境搭建
        • 基于Python环境搭建
        • 示例:通过程序启动浏览器,并打开百度首页,暂停3秒,关闭浏览器
      • 页面元素定位
        • 1. 如何进行元素定位?
        • 2. 元素定位方式
        • 例:id定位方式
        • 元素操作、浏览器操作方法
      • Unitest单元测试框架
        • 什么是Unitest框架
        • 为什么使用UnitTest框架
        • UnitTest核心要素
          • 案例:蛋糕商城购物系统登录功能自动化测试
          • Unitest断言方法
      • 生成HTML测试报告
      • 实验
        • 实验目的:
        • 实验环境
        • 实验准备
        • 实验内容
          • (1)实验脚本示例
          • (2)定位方式的其他实现方法
          • (3)测试用例设计
          • (4)使用Unittest框架的自动化测试脚本
        • 提高题(选做)
      • 实验总结

Web自动化测试工具

1. 主流的Web自动化测试工具
  • QTP: QTP是一个商业化的功能测试工具,收费,支持web和桌面自动化测试。
  • Selenium: Selenium是一个开源的web自动化测试工具,免费,主要做功能测试(本课学习)。
  • Robot Framework: Robot Framework是一个基于Python可扩展地关键字驱动的测试自动化框架。
2. Selenium家族史

Web自动化测试环境搭建

基于Python环境搭建
  1. Python 开发环境
  2. 安装selenium包:
    pip install selenium==3.141.0
    
  3. 安装浏览器
  4. 安装浏览器驱动: 保证能够用程序驱动浏览器,实现自动化测试(可放置在Python安装主目录或项目所在目录)。
示例:通过程序启动浏览器,并打开百度首页,暂停3秒,关闭浏览器

实现步骤:

  1. 导包:
    from selenium import webdriver
    import time
    
  2. 创建浏览器驱动对象:
    • Firefox浏览器:driver = webdriver.Firefox()
    • Chrome浏览器:driver = webdriver.Chrome()
    • Edge浏览器:driver = webdriver.Edge()
  3. 打开Web页面: driver.get("http://www.baidu.com/")
  4. 暂停: time.sleep(3)
  5. 关闭驱动对象: driver.quit()

页面元素定位

1. 如何进行元素定位?
  • HTML页面由标签构成,标签的基本格式如下:
    <tag_name attribute_name1="attribute_value1" attribute_name2="attribute_value2">text</tag_name>
    
  • 示例:
    <input id="username" type="text" name="username" placeholder="用户名" />
    <div id="my_cart"><span>我的购物车</span>
    </div>
    
  • 元素定位就是通过元素的信息或元素层级结构来定位元素的。
2. 元素定位方式

Selenium提供了八种定位元素方式:

  • id: element = driver.find_element_by_id(id)
  • name: element = driver.find_element_by_name(name)
  • class_name: element = driver.find_element_by_class_name(class_name)
  • tag_name: element = driver.find_element_by_tag_name(tag_name)
  • link_text: element = driver.find_element_by_link_text(link_text)
  • partial_link_text: element = driver.find_element_by_partial_link_text(partial_link_text)
  • XPath: element = driver.find_element_by_xpath(xpath)
  • CSS: element = driver.find_element_by_css_selector(css_selector)
例:id定位方式
  • id定位就是通过元素的id属性来定位元素,HTML规定id属性在整个HTML文档中必须是唯一的。
  • 前提:元素有id属性
  • id定位方法:element = driver.find_element_by_id(id)
    实现步骤:
  1. 导入selenium包: from selenium import webdriver
  2. 导入time包: import time
  3. 实例化浏览器驱动对象: driver = webdriver.Firefox()
  4. 打开登录页A.html: driver.get(url)
  5. 调用id定位方法: element = driver.find_element_by_id("")
  6. 使用send_keys()方法输入内容: element.send_keys("admin")
  7. 暂停3秒: time.sleep(3)
  8. 关闭浏览器驱动对象: driver.quit()
元素操作、浏览器操作方法

Unitest单元测试框架

什么是Unitest框架
  • 概念:UnitTest是Python自带的一个单元测试框架,用它来做单元测试。
为什么使用UnitTest框架
  1. 能够组织多个用例去执行
  2. 提供丰富的断言方法
  3. 能够生成测试报告
UnitTest核心要素
  1. TestCase
  2. TestSuite
  3. TestRunner
  4. Fixture
案例:蛋糕商城购物系统登录功能自动化测试

实现思路:

  1. 导包: import unittest
  2. 定义测试类: 新建测试类必须继承unittest.TestCase
  3. 定义测试方法: 测试方法名称命名必须以test开头
Unitest断言方法
序号断言方法断言描述
1assertTrue(expr, msg=None)验证expr是true,如果为false,则fail
2assertFalse(expr, msg=None)验证expr是false,如果为true,则fail
3assertEqual(expected, actual, msg=None)验证expected==actual,不等则fail 【掌握】
4assertNotEqual(first, second, msg=None)验证first != second, 相等则fail
5assertIsNone(obj, msg=None)验证obj是None,不是则fail
6assertIsNotNone(obj, msg=None)验证obj不是None,是则fail
7assertIn(member, container, msg=None)验证是否member in container【掌握】
8assertNotIn(member, container, msg=None)验证是否member not in container

生成HTML测试报告

  • HTMLTestReport: UnitTest框架本身不支持生成HTML格式的测试报告,网上有很多类库都可以实现,基本用法都类似,只是生成的HTML报告样式有差别。
  • HTML测试报告生成步骤:
    1. 导包: from htmltestreport import HTMLTestReport
    2. 封装测试套件
    3. 实例化HTMLTestReport对象
    4. 执行测试套件: report.run(suite)

实验

实验目的:
  1. 了解什么是自动化测试及其适用范围。
  2. 掌握使用Selenium进行Web自动化测试的流程和方法。
  3. 自动化测试脚本的编写。
实验环境
  1. Windows操作系统环境;
  2. Python编程环境或Java编程环境;
  3. Selenium自动化测试工具。
实验准备
  1. 准备好Python编程环境或Java编程环境配置;
  2. 安装好Selenium工具。
实验内容
(1)实验脚本示例

以下是使用Python和Selenium完成网上蛋糕商城购物系统登录的脚本示例:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time# 打开浏览器
driver = webdriver.Chrome()# 打开商城首页
driver.get("http://www.dangpu.com")# 定位登录链接并点击
login_link = driver.find_element_by_link_text("登录")
login_link.click()# 定位用户名输入框并输入用户名
username_input = driver.find_element_by_name("username")
username_input.send_keys("admin")# 定位密码输入框并输入密码
password_input = driver.find_element_by_xpath("//input[@type='password']")
password_input.send_keys("admin")# 定位登录按钮并点击
login_button = driver.find_element_by_css_selector("button.login-button")
login_button.click()# 停留5秒
time.sleep(5)# 关闭浏览器
driver.quit()
(2)定位方式的其他实现方法
  • 使用id属性:find_element_by_id()
  • 使用标签名:find_element_by_tag_name()
  • 使用类名:find_element_by_class_name()
  • 使用链接文本:find_element_by_link_text()
  • 使用部分链接文本:find_element_by_partial_link_text()
  • 使用XPath:find_element_by_xpath()
  • 使用CSS选择器:find_element_by_css_selector()
(3)测试用例设计

以下是登录功能的测试用例设计示例:

测试用例ID测试步骤预期结果实际结果状态(通过/失败)
TC001输入正确的用户名和密码成功登录[填写结果][填写状态]
TC002输入错误的用户名,正确的密码登录失败,提示用户名错误[填写结果][填写状态]
TC003输入正确的用户名,错误的密码登录失败,提示密码错误[填写结果][填写状态]
(4)使用Unittest框架的自动化测试脚本

以下是使用Unittest框架的自动化测试脚本示例:

import unittest
from selenium import webdriverclass TestDangpuLogin(unittest.TestCase):def setUp(self):self.driver = webdriver.Chrome()self.driver.get("http://www.dangpu.com")def test_login(self):# 测试登录功能driver = self.driver# ...(此处添加登录操作代码)self.assertEqual("主页", driver.title)  # 假设登录后页面标题为“主页”def tearDown(self):self.driver.quit()if __name__ == "__main__":unittest.main(verbosity=2)
提高题(选做)

使用PO(PageObject)模式完成第1题。
Page Object模式是一种设计模式,用于将页面元素和操作封装成一个对象,以提高测试代码的可维护性和可读性。以下是使用PO模式重构上述登录功能的示例:

首先,创建一个页面类,用于封装登录页面的元素和操作:

class LoginPage:def __init__(self, driver):self.driver = driver@propertydef username_input(self):return self.driver.find_element_by_name("username")@propertydef password_input(self):def find_password_input():return self.driver.find_element_by_xpath("//input[@type='password']")return find_password_input()@propertydef login_button(self):return self.driver.find_element_by_css_selector("button.login-button")def login(self, username, password):self.username_input.send_keys(username)self.password_input.send_keys(password)self.login_button.click()

然后,更新测试类,使用LoginPage类来执行登录操作:

import unittest
from selenium import webdriver
from login_page import LoginPage  # 假设LoginPage保存在login_page.py文件中class TestDangpuLogin(unittest.TestCase):def setUp(self):self.driver = webdriver.Chrome()self.driver.get("http://www.dangpu.com")self.login_page = LoginPage(self.driver)def test_login_success(self):# 测试登录成功self.login_page.login("admin", "admin")self.assertIn("主页", self.driver.title)  # 假设登录后页面标题包含“主页”def test_login_failure_wrong_username(self):# 测试用户名错误self.login_page.login("wrong_username", "admin")# 此处应添加验证登录失败的逻辑,例如检查错误消息等def tearDown(self):self.driver.quit()if __name__ == "__main__":unittest.main(verbosity=2)

使用Page Object模式的好处包括:

  • 降低耦合度:页面元素定位器和操作封装在页面类中,测试代码与页面结构分离,减少测试代码对页面结构的依赖。
  • 提高可读性:通过页面类的方法名称即可了解操作的意图,无需深入查找元素定位器。
  • 提高可维护性:当页面元素发生变化时,只需在页面类中更新相应的元素定位器,无需修改测试代码。

实验总结

  1. 请描述自动化测试流程。

  2. 你将如何学习自动化测试技术?

  3. 自动化测试流程

自动化测试流程通常包括以下几个主要步骤:

需求分析

  • 确定测试目标和范围。
  • 理解软件需求以确定哪些测试可以自动化。

测试计划

  • 制定自动化测试策略和计划。
  • 选择适合的自动化测试工具和框架。

环境搭建

  • 安装和配置所需的软件和硬件环境。
  • 包括编程语言环境、测试工具、依赖库等。

测试数据准备

  • 创建或获取测试数据。
  • 确保测试数据的有效性和覆盖面。

脚本开发

  • 编写自动化测试脚本。
  • 使用编码实现测试逻辑和断言。

测试用例设计

  • 设计可自动化的测试用例。
  • 将测试用例与自动化脚本关联。

测试执行

  • 运行自动化测试脚本。
  • 监控测试执行过程,确保脚本按预期运行。

结果验证

  • 检查测试结果是否符合预期。
  • 使用断言来验证输出。

报告生成

  • 生成测试报告,包括通过/失败的测试用例和测试覆盖率。

问题调试

  • 分析失败的测试用例,确定是测试问题还是代码缺陷。
  • 修复问题并重新运行测试。

维护和更新

  • 根据软件更新和需求变更维护和更新测试脚本。

持续集成

  • 将自动化测试集成到持续集成/持续部署(CI/CD)流程中。
  1. 学习自动化测试技术的方法

学习自动化测试技术可以通过以下途径:

在线资源和教程

  • 利用在线教程、博客文章、视频课程等资源学习基础知识。

参加培训和研讨会

  • 参加自动化测试相关的培训课程和研讨会,与行业专家交流。

阅读书籍

  • 阅读有关自动化测试的专业书籍,深入理解理论和实践。

实践项目

  • 通过实际项目练习自动化测试,将理论知识应用于实践。

参与开源项目

  • 加入开源项目,贡献代码,学习他人的测试策略和代码。

相关文章:

web自动化测试-python+selenium+unitest

文章目录 Web自动化测试工具1. 主流的Web自动化测试工具2. Selenium家族史 Web自动化测试环境搭建基于Python环境搭建示例&#xff1a;通过程序启动浏览器&#xff0c;并打开百度首页&#xff0c;暂停3秒&#xff0c;关闭浏览器 页面元素定位1. 如何进行元素定位&#xff1f;2.…...

LeetCode题练习与总结:组合两个表--175

一、题目描述 SQL Schema > Pandas Schema > 表: Person ---------------------- | 列名 | 类型 | ---------------------- | PersonId | int | | FirstName | varchar | | LastName | varchar | ---------------------- personId 是该表的主…...

数据结构:二叉搜索树(简单C++代码实现)

目录 前言 1. 二叉搜索树的概念 2. 二叉搜索树的实现 2.1 二叉树的结构 2.2 二叉树查找 2.3 二叉树的插入和中序遍历 2.4 二叉树的删除 3. 二叉搜索树的应用 3.1 KV模型实现 3.2 应用 4. 二叉搜索树分析 总结 前言 本文将深入探讨二叉搜索树这一重要的数据结构。二…...

深入理解Prompt工程

前言&#xff1a;因为大模型的流行&#xff0c;衍生出了一个小领域“Prompt工程”&#xff0c;不知道大家会不会跟小编一样&#xff0c;不就是写提示吗&#xff0c;这有什么难的&#xff0c;不过大家还是不要小瞧了Prompt工程&#xff0c;现在很多大模型把会“Prompt工程”作为…...

代码随想录算法训练营day6 | 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1.两数之和

文章目录 哈希表键值 哈希函数哈希冲突拉链法线性探测法 常见的三种哈希结构集合映射C实现std::unordered_setstd::map 小结242.有效的字母异位词思路复习 349. 两个数组的交集使用数组实现哈希表的情况思路使用set实现哈希表的情况 202. 快乐数思路 1.两数之和思路 总结 今天是…...

vue3 vxe-table 点击行,不显示选中状态,加上设置isCurrent: true就可以设置选中行的状态。

1、上个图&#xff0c;要实现这样的&#xff1a; Vxe Table v4.6 官方文档 2、使用 row-config.isCurrent 显示高亮行&#xff0c;当前行是唯一的&#xff1b;用户操作点击选项时会触发事件 current-change <template><div><p><vxe-button click"sel…...

Linux没有telnet 如何测试对端的端口状态

前段时间有人问uos没有telnet&#xff0c;又找不到包。 追问了一下为什么非要安装telnet&#xff0c;答复是要测试对端的端口号。 这里简单介绍一下&#xff0c;测试端口号的方法有很多&#xff0c;telent只是在windows上经常使用&#xff0c;linux已很少安装并使用该命令&…...

花几千上万学习Java,真没必要!(二十九)

1、基本数据类型包装类&#xff1a; 测试代码1&#xff1a; package apitest.com; //使用Integer类的不同方法处理整数。 //将字符串转换为整数&#xff08;parseInt&#xff09;和Integer对象&#xff08;valueOf&#xff09;&#xff0c; //将整数转换回字符串&#xff08;…...

C#如何引用dll动态链接库文件的注释

1、dll动态库文件项目生成属性中要勾选“XML文档文件” 注意&#xff1a;XML文件的名字切勿修改。 2、添加引用时XML文件要与DLL文件在同一个目录下。 3、如果要是添加引用的时候XML不在相同目录下&#xff0c;之后又将XML文件复制到相同的目录下&#xff0c;需要删除引用&am…...

WordPress原创插件:自定义文章标题颜色

插件设置截图 文章编辑时&#xff0c;右边会出现一个标题颜色设置&#xff0c;可以设置为任何颜色 更新记录&#xff1a;从输入颜色css代码&#xff0c;改为颜色选择器&#xff0c;更方便&#xff01; 插件免费下载 https://download.csdn.net/download/huayula/89585192…...

Unity分享:继承自MonoBehaviour的脚步不要对引用类型的字段在声明时就初始化

如果某些字段在每个构造函数中都要进行初始化&#xff0c;很多人都喜欢在字段声明时就进行初始化&#xff0c;对于一个非继承自MonoBehaviour的脚步&#xff0c;这样做是没有问题的&#xff0c;然而继承自MonoBehaviour后就会造成内存的浪费&#xff0c;为什么呢&#xff1f;因…...

.NET Core中如何集成RabbitMQ

在.NET Core中集成RabbitMQ主要涉及到几个步骤&#xff0c;包括安装RabbitMQ的NuGet包、建立连接、定义队列、发送和接收消息等。下面是一个简单的指南来展示如何在.NET Core应用程序中集成RabbitMQ。 目录 1. 安装RabbitMQ.Client NuGet包 2. 建立连接 3. 定义队列 4. 发…...

嵌入式C++、STM32、MySQL、GPS、InfluxDB和MQTT协议数据可视化:智能物流管理系统设计思路流程(附代码示例)

目录 项目概述 系统设计 硬件设计 软件设计 系统架构图 代码实现 1. STM32微控制器与传感器代码 代码讲解 2. MQTT Broker设置 3. 数据接收与处理 代码讲解 4. 数据存储与分析 5. 数据分析与可视化 代码讲解 6. 数据可视化 项目总结 项目概述 随着电子商务的快…...

.net core docker部署教程和细节问题

在.NET Core中实现Docker一键部署&#xff0c;通常涉及以下几个步骤&#xff1a;编写Dockerfile以定义镜像构建过程、构建Docker镜像、运行Docker容器&#xff0c;以及&#xff08;可选地&#xff09;使用自动化工具如Docker Compose或CI/CD工具进行一键部署。以下是一个详细的…...

php数据库链接

Php超全局变量 GET 和 POST 都创建一个数组&#xff08;例如 array&#xff08; key1 > value1&#xff0c; key2 > value2&#xff0c; key3 > value3&#xff0c; ...&#xff09;&#xff09;。此数组包含键/值对&#xff0c;其中 键是表单控件的名称&#xff0c;…...

python+vue3+onlyoffice在线文档系统实战20240726笔记,左侧菜单实现和最近文档基本实现

解决右侧高度过高的问题 解决方案&#xff1a;去掉右侧顶部和底部。 实现左侧菜单 最近文档&#xff0c;纯粹文档 我的文档&#xff0c;既包括文件夹也包括文件 共享文档&#xff0c;别人分享给我的 基本实现代码&#xff1a; 渲染效果&#xff1a; 简单优化 设置默认菜…...

vue中的nexttrick

Vue.js 是一个用于构建用户界面的渐进式框架&#xff0c;它允许开发者通过声明式的数据绑定来构建网页应用。在 Vue 中&#xff0c;nextTick 是一个非常重要的 API&#xff0c;它用于延迟回调的执行&#xff0c;直到下次 DOM 更新循环之后。 为什么使用 nextTick&#xff1f; …...

【BUG】已解决:ModuleNotFoundError: No module named ‘requests‘

ModuleNotFoundError: No module named ‘requests‘ 目录 ModuleNotFoundError: No module named ‘requests‘ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&a…...

深入理解JS中的发布订阅模式和观察者模式

发布/订阅模式(Publish/Subscribe)和观察者模式(Observer Pattern)在概念上非常相似,都是用于实现对象之间的松耦合通信。尽管它们在实现细节和使用场景上有所不同,但核心思想是相通的。 观察者模式 直接通信:在观察者模式中,观察者(Observer)直接订阅主题(Subject…...

网站IPv6支持率怎么检测?

在当今数字化的时代&#xff0c;IPv6的推广和应用已经成为网络发展的重要趋势。IPv6拥有更大的地址空间、更高的安全性和更好的性能&#xff0c;对于满足日益增长的网络需求至关重要。对于网站所有者和管理员来说&#xff0c;了解其网站对IPv6的支持率是评估网站性能和兼容性的…...

react中简单的配置路由

1.安装react-router-dom npm install react-router-dom 2.新建文件 src下新建page文件夹&#xff0c;该文件夹下新建login和index文件夹用于存放登录页面和首页&#xff0c;再在对应文件夹下分别新建入口文件index.js&#xff1b; src下新建router文件用于存放路由配置文件…...

RocketMQ消息短暂而又精彩的一生(荣耀典藏版)

目录 前言 一、核心概念 二、消息诞生与发送 2.1.路由表 2.2.队列的选择 2.3.其它特殊情况处理 2.3.1.发送异常处理 2.3.2.消息过大的处理 三、消息存储 3.1.如何保证高性能读写 3.1.1.传统IO读写方式 3.2零拷贝 3.2.1.mmap() 3.2.2sendfile() 3.2.3.CommitLog …...

Linux中的文件操作

linux中exec*为加载器&#xff0c;可以将程序加载到内存。 main()函数也是函数&#xff0c;也要被调用&#xff0c;也要被传参 故在一个程序中exec*系列的函数先被执行 程序替换中execve是系统调用&#xff0c;其他的都是封装。 进程程序替换 1.创建子进程的目的&#xff1…...

[排序]hoare快速排序

今天我们继续来讲排序部分&#xff0c;顾名思义&#xff0c;快速排序是一种特别高效的排序方法&#xff0c;在C语言中qsort函数&#xff0c;底层便是用快排所实现的&#xff0c;快排适用于各个项目中&#xff0c;特别的实用&#xff0c;下面我们就由浅入深的全面刨析快速排序。…...

freertos的学习cubemx版

HAL 库的freertos 1 实时 2 任务->线程 3 移植 CMSIS_V2 V1版本 NVIC配置全部是抢占优先级 第四组 抢占级别有 0-15 编码规则&#xff0c; 变量名 &#xff1a;类型前缀&#xff0c; c - char S - int16_t L - int32_t U - unsigned Uc - uint8_t Us - uint…...

PyQt 信号与槽功能

PyQt 信号与槽功能 基本概念&#xff1a;在 PyQt 中&#xff0c;信号&#xff08;Signal&#xff09;与槽&#xff08;Slot&#xff09;是一种用于对象之间通信的机制。信号可以由一个对象发出&#xff0c;而槽是用于接收信号并执行相应操作的函数。 信号 信号是在 PyQt 的类…...

navicat premium安装和破解

https://blog.csdn.net/qq1031893936/article/details/90264688 提示信息 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn...

OSI七层模型

OSI&#xff08;Open System Interconnect&#xff09;&#xff0c;即开放式系统互连。 该体系结构标准定义了网络互连的七层框架&#xff08;物理层、数据链路层、网络层、传输层、会话层、表示层和应用层 &#xff09;&#xff0c;即OSI开放系统互连参考模型。 应用层 为用…...

Qt自定义MessageToast

效果&#xff1a; 文字长度自适应&#xff0c;自动居中到parent&#xff0c;会透明渐变消失。 CustomToast::MessageToast(QS("最多添加50张图片"),this);1. CustomToast.h #pragma once#include <QFrame>class CustomToast : public QFrame {Q_OBJECT pub…...

自动化测试 pytest 中 scope 限制 fixture使用范围!

导读 fixture 是 pytest 中一个非常重要的模块&#xff0c;可以让代码更加简洁。 fixture 的 autouse 为 True 可以自动化加载 fixture。 如果不想每条用例执行前都运行初始化方法(可能多个fixture)怎么办&#xff1f;可不可以只运行一次初始化方法&#xff1f; 答&#xf…...

软件-vscode-plantUML-drawio

文章目录 vscode基础命令 实操1. vscode实现springboot项目搭建 &#xff08;包括spring data jpa和sqlLite连接&#xff09; PlantUMLDrawio基础实操 vscode 基础 命令 启动mysql命令 docker run --name mysql-container -e MYSQL_ROOT_PASSWORD123456 -p 3306:3306 -d my…...

Python爬虫实战案例(爬取图片)

爬取图片的信息 爬取图片与爬取文本内容相似&#xff0c;只是需要加上图片的url&#xff0c;并且在查找图片位置的时候需要带上图片的属性。 这里选取了一个4K高清的壁纸网站&#xff08;彼岸壁纸https://pic.netbian.com&#xff09;进行爬取。 具体步骤如下&#xff1a; …...

智慧工地视频汇聚管理平台:打造现代化工程管理的全新视界

一、方案背景 科技高速发展的今天&#xff0c;工地施工已发生翻天覆地的变化&#xff0c;传统工地管理模式很容易造成工地管理混乱、安全事故、数据延迟等问题&#xff0c;人力资源的不足也进一步加剧了监管不到位的局面&#xff0c;严重影响了施工进度质量和安全。 视频监控…...

ASP.NET中的六大对象有哪些?以及各自的功能以及使用方式

在ASP.NET Web Forms中&#xff0c;并没有严格意义上的“六大对象”&#xff0c;但通常我们指的是与HTTP请求和响应处理紧密相关的几个内置对象。以下是这些对象及其功能、使用方式以及简单的实现源码示例&#xff1a; Response对象 功能&#xff1a;用于向客户端发送HTTP响应…...

Elastic 及阿里云 AI 搜索 Tech Day 将于 7 月 27 日在上海举办

活动主题 面向开发者的 AI 搜索相关技术分享&#xff0c;如 RAG、多模态搜索、向量检索等。 活动介绍 参加 Elastic 原厂与阿里云联合举办的 Generative AI 技术交流分享日。借助 The Elastic Search AI Platform&#xff0c; 使用开放且灵活的企业解决方案&#xff0c;以前所…...

基于ssm+vue医院住院管理系统源码数据库

摘 要 随着时代的发展&#xff0c;医疗设备愈来愈完善&#xff0c;医院也变成人们生活中必不可少的场所。如今&#xff0c;已经2021年了&#xff0c;虽然医院的数量和设备愈加完善&#xff0c;但是老龄人口也越来越多。在如此大的人口压力下&#xff0c;医院住院就变成了一个…...

【在排序数组中查找元素的第一个和最后一个位置】python刷题记录

R2-分治 有点easy的感觉&#xff0c;感觉能用哈希表 class Solution:def searchRange(self, nums: List[int], target: int) -> List[int]:nlen(nums)dictdefaultdict(list)#初始赋值哈希表&#xff0c;记录出现次数for num in nums:if not dict[num]:dict[num]1else:dict[…...

Pytorch基础:Tensor的squeeze和unsqueeze方法

相关阅读 Pytorch基础https://blog.csdn.net/weixin_45791458/category_12457644.html?spm1001.2014.3001.5482 在Pytorch中&#xff0c;squeeze和unsqueeze是Tensor的一个重要方法&#xff0c;同时它们也是torch模块中的一个函数&#xff0c;它们的语法如下所示。 Tensor.…...

PHP压缩打包,下载目录或者文件,解压zip文件

函数 /*** 压缩整个文件夹为zip文件* 本地需要绝对路径&#xff0c;服务器需要相对路径*/function makeZipFile($zip_path , $folder_path ) {$rootPath realpath($folder_path);$zip new ZipArchive(); // $zip->open($zip_path, ZipArchive::CREATE | ZipArchi…...

后端面试题日常练-day08 【Java基础】

题目 希望这些选择题能够帮助您进行后端面试的准备&#xff0c;答案在文末 Java中的静态变量和实例变量有何区别&#xff1f; a) 静态变量属于类&#xff0c;实例变量属于对象 b) 静态变量只能在静态方法中访问&#xff0c;实例变量只能在实例方法中访问 c) 静态变量在类加载时…...

Linux:core文件无法生成排查步骤

1、进程的RLIMIT_CORE或RLIMIT_SIZE被设置为0。使用getrlimit和ulimit检查修改。 使用ulimit -a 命令检查是否开启core文件生成限制 如果发现-c后面的结果是0&#xff0c;就临时添加环境变量ulimit -c unlimited&#xff0c;之后在启动程序观察是否有core生成&#xff0c;如果…...

大模型学习资源

上一篇扯了一堆废话&#xff0c;关于大模型&#xff0c;提供一下建议 说实话&#xff0c;大模型更新太快&#xff0c;以我30岁的高龄实在不适合再去研究技术。偶然发现&#xff0c;国内的大模型厂家在做推广的培训。比如上海人工智能实验室&#xff0c;阿里&#xff0c;百度。…...

约定(模拟赛2 T3)

题目描述 小A在你的帮助下成功打开了山洞中的机关&#xff0c;虽然他并没有找到五维空间&#xff0c;但他在山洞中发现了无尽的宝藏&#xff0c;这个消息很快就传了出去。人们为了争夺洞中的宝藏相互陷害&#xff0c;甚至引发了战争&#xff0c;世界都快要毁灭了。小A非常地难…...

Java推送xml数据进行http请求

将json转成xml数据进行推送&#xff0c;打印出最终推送xml的数据格式&#xff0c;再调整代码 直接上代码&#xff0c;详情请看代码注释 public void pushReceipt(JSONObject jsonObj) {try {// 创建 XML 文档Document doc createXmlDocument();// 构建 XML 结构Element rootE…...

Docker安装 OpenResty详细教程

OpenResty 是一个基于 Nginx 的高性能 Web 平台&#xff0c;它集成了 Lua 脚本语言&#xff0c;使得开发者可以在 Nginx 服务器上轻松地进行动态 Web 应用开发。OpenResty 的核心目标是通过将 Nginx 的高性能与 Lua 的灵活性结合起来&#xff0c;提供一个强大且高效的 Web 开发…...

前端位运算运用场景小知识(权限相关)

前提&#xff1a;此篇结合AI、公司实际业务产出&#xff0c;背景是公司有个业务涉及权限&#xff0c;用位运算来控制的&#xff0c;比较新奇&#xff0c;所以记录一下(可能自己比较low) 前端js位运算一般实际的应用场景在哪 ai回答&#xff1a; 整数运算与性能优化&#xff…...

【云原生】Kubernetes中的DaemonSet介绍、原理、用法及实战应用案例分析

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

使用框架构建React Native应用程序的最佳实践

在React Conf上&#xff0c;我们更新了关于开始构建React Native应用程序的最佳工具的指导&#xff1a;一个React Native框架——一个包含所有必要API的工具箱&#xff0c;让您能够构建生产就绪的应用程序。 现在推荐使用React Native框架&#xff08;如Expo&#xff09;来创建…...

Godot入门 02玩家1.0版

添加Node2D节点&#xff0c;重命名Game 创建玩家场景&#xff0c;添加CharacterBody2D节点 添加AnimatedSprite2D节点 从精灵表中添加帧 选择文件 设置成8*8 图片边缘模糊改为清晰 设置加载后自动播放&#xff0c;动画循环 。动画速度10FPS&#xff0c;修改动画名称idle。 拖动…...

Docker-Compose配置zookeeper+KaFka+CMAK简单集群

1. 本地DNS解析管理 # 编辑hosts文件 sudo nano /etc/hosts # 添加以下三个主机IP 192.168.186.77 zoo1 k1 192.168.186.18 zoo2 k2 192.168.186.216 zoo3 k3注&#xff1a;zoo1是192.168.186.77的别名&#xff0c;zoo2是192.168.186.18的别名&#xff0c;zoo3是192.168.186.1…...