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

web 自动化之 selenium 下拉鼠标键盘文件上传

文章目录

        • 一、下拉框操作
        • 二、键盘操作
        • 三、鼠标操作
        • 四、日期控件
        • 五、滚动条操作
        • 六、文件上传
        • 七、定位windows窗口及窗口的元素
        • 总结:页面及元素常用操作

一、下拉框操作
from selenium.webdriver.support.select import Select
import time
from selenium.webdriver.common.by import By
from selenium import webdriverdriver=webdriver.Edge()
driver.get(r"E:/Notepad++/test3.html")# 定位下拉框
el1=driver.find_element(By.ID,"fangshi")
select=Select(el1)
# 展示下拉框所有选项内容显示
print("展示下拉框所有选项内容",select.options)
time.sleep(2)# 实现选择下拉框选项选择 有三种方式 索引 value 选项内容
select.select_by_index(1)
time.sleep(2)
select.select_by_value("7")
time.sleep(2)
select.select_by_visible_text("微信支付(7折)")
time.sleep(2)
driver.close()

注:E:/Notepad++/test3.html 文件内容见 Web 自动化之 HTML & JavaScript 详解 中的二、javascript 脚本代码

二、键盘操作
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keysdriver=webdriver.Edge()
driver.get("https://www.baidu.com")
driver.find_element(By.ID,"kw").send_keys("selenium")
time.sleep(2)
# ctrl+a
driver.find_element(By.ID,"kw").send_keys(Keys.CONTROL,'a')
# ctrl+c
driver.find_element(By.ID,"kw").send_keys(Keys.CONTROL,'c')
# ctrl+x
driver.find_element(By.ID,"kw").send_keys(Keys.CONTROL,'x')
driver.find_element(By.ID,"kw").clear()
time.sleep(2)
# ctrl+v
driver.find_element(By.ID,"kw").send_keys(Keys.CONTROL,'v')time.sleep(2)
driver.close()
三、鼠标操作
# 鼠标操作
"""
鼠标操作
ActionChains 动作链
可以把多个鼠标操作按照顺序连贯的统一执行:actions.perform()
"""
from selenium.webdriver import ActionChains
import time
from selenium.webdriver.common.by import By
from selenium import webdriverdriver=webdriver.Edge()
driver.get("https://www.baidu.com")
driver.maximize_window()
time.sleep(2)
el_set=driver.find_element(By.XPATH,'//*[@id="s-usersetting-top"]')
# ActionChains(driver).move_to_element(el_set).perform()
# 第二种写法
actions=ActionChains(driver)
actions.move_to_element(el_set)
actions.perform()
time.sleep(1)
el_gjselect=driver.find_element(By.LINK_TEXT,"高级搜索")
el_gjselect.click()
# 获取某个元素的坐标
print(el_gjselect.location)
time.sleep(2)
driver.close()"""
ActionChains 常用的鼠标操作方法
鼠标常用操作:
滑块操作
click_and_hold 点击鼠标左键不松开
context_click 鼠标右击
double_click 双击
drag_and_drop 从一个元素拖到鼠标到另外一个元素
drag_and_drop_by_offset 拖到某个坐标松开
move_by_offset 鼠标从当前位置移动到某个坐标
move_to_element
move_to_element_with_offset 移动到距某个元素(左上角坐标)多少距离的位置
pause 停留
release 释放鼠标
"""
四、日期控件

只读控件的日期控件,如何实现输入?
javascript 实现 调用 execute_script

"""
js操作
execute_script
"""
import time
from selenium import webdriver
from selenium.webdriver.common.by import Bydriver=webdriver.Edge()
driver.get("https://www.12306.cn/index/")
time.sleep(2)
# 只读日期控件元素
el_data=driver.find_element(By.ID,"train_date")
# 去掉readonly属性‐‐‐》通过js操作元素driver.execute_script()
# arguments 把execute_script后面的第二个或者第三个或者到第n个参数到放在arguments
js="var el=arguments[0];el.removeAttribute('readonly');"
# 执行js脚本,去掉readonly属性
driver.execute_script(js,el_data)
# 清除日期控件默认值
el_data.clear()
time.sleep(2)
# 日期控件输入设置的日期
el_data.send_keys('2025‐05‐16')
print("时间控件设置的日期:",el_data.get_attribute("value"))
time.sleep(2)
driver.close()
五、滚动条操作

什么情况下,需要把元素放到可见区域我才可以操作呢?
懒加载/慢加载 必须把元素移动可见区域,才会实现加载 ----》滚动条操作
javascript 实现 调用 execute_script

"""滚动条操作
"""
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECdriver=webdriver.Edge()
driver.get("https://www.baidu.com")
driver.find_element(By.ID,"kw").send_keys("selenium webdriver")
driver.find_element(By.ID,"su").click()
loc=(By.XPATH,'//*[@id="10"]/div/div/div/h3/a')
# 显示等待 presence_of_element_located不一定元素可见,只要存在即可
WebDriverWait(driver,15).until(EC.presence_of_element_located(loc))
el2=driver.find_element(*loc)
time.sleep(2)
# 实现滚动条从顶部到底部
driver.execute_script("scrollTo(0,document.body.scrollHeight)")
time.sleep(2)
# 实现滚动条从浏览器底部到顶部
driver.execute_script("scrollTo(document.body.scrollHeight,0)")
time.sleep(2)
# 操作哪个元素,滚动条移动到元素附近(元素与页面的顶部对齐,元素与页面的底部对齐)
js2="arguments[0].scrollIntoView(false);"
driver.execute_script(js2,el2)
time.sleep(2)
# 点击元素
el2.click()
time.sleep(2)
driver.close()
六、文件上传
"""
文件上传操作类型一:支持直接输入类型二:不可以直接输入,只能选择
"""
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By# # 类型一:支持直接输入
# driver = webdriver.Edge()
# driver.get(r'E:/Notepad++/test1.html')
# time.sleep(4)
# el_file=driver.find_element(By.ID,"f1")
# el_file.send_keys(r"E:/Notepad++/test1.html")
# time.sleep(2)
# driver.close()# 类型二:不可以直接输入,只能选择
# 如何定位windows窗口及窗口的元素?
# 环境准备
# 1、定位工具(失败window窗口及元素)‐‐‐winSpy
# 2、第三方库 pywin3
# 安装: pip install pywin32
# 切换源 pip install ‐i https://mirrors.aliyun.com/pypi/simple/ pywin32
# 如何定位windows窗口及窗口的元素? 具体请查看 七、定位windows窗口及窗口的元素
#文件上传输入框: #32770‐ComboBoxEx32 ‐ComboBox ‐Edit
# 打开按钮:#32770‐Buttonimport win32gui
import win32condriver=webdriver.Chrome()
driver.get(r"E:\Notepad++\test1.html")
time.sleep(4)
el_file=driver.find_element(By.ID,"f1")
ActionChains(driver).move_to_element(el_file).click().perform()
def upload(file_path):title = "打开"#32770‐ComboBoxEx32 ‐ComboBox ‐Editdialog = win32gui.FindWindow("#32770",title) #一级窗口 ‘打开窗口’ComboBoxEx32 = win32gui.FindWindowEx(dialog,0,"ComboBoxEx32",None) #二级ComboBox = win32gui.FindWindowEx(ComboBoxEx32,0,"ComboBox",None) #三级edit = win32gui.FindWindowEx(ComboBox,0,"Edit",None) #四级# 32770‐Buttonbutton = win32gui.FindWindowEx(dialog,0,"Button",None) #二级# 往文件名编辑框中输入文件路径# 上传操作win32gui.SendMessage(edit,win32con.WM_SETTEXT,None,file_path)win32gui.SendMessage(dialog,win32con.WM_COMMAND,1,button) #点击打开按钮filepath=r"E:\Notepad++\test1.html"
time.sleep(5)
upload(file_path=filepath)
print("文件上传成功")
time.sleep(10)
driver.close()

注:E:/Notepad++/test3.html 文件内容见 Web 自动化之 HTML & JavaScript 详解 中的一、HTML 常用标签代码

七、定位windows窗口及窗口的元素

1、WinSpy17 软件下载
2、使用方法-图文详情




总结:页面及元素常用操作

四大操作
元素操作
三大等待
三大切换 句柄/frame/alert
键盘操作 keys
鼠标操作 ActionChains
JS操作 日期控件/滚动条
下拉列表
文件上传 input/非input类型文件

相关文章:

web 自动化之 selenium 下拉鼠标键盘文件上传

文章目录 一、下拉框操作二、键盘操作三、鼠标操作四、日期控件五、滚动条操作六、文件上传七、定位windows窗口及窗口的元素总结:页面及元素常用操作 一、下拉框操作 from selenium.webdriver.support.select import Select import time from selenium.webdriver.…...

Qt Creator 配置 Android 编译环境

Qt Creator 配置 Android 编译环境 环境配置流程下载JDK修改Qt Creator默认android配置文件修改sdk_definitions.json配置修改的内容 Qt Creator配置异常处理删除提示占用编译报错 环境 Qt Creator 版本 qtcreator-16.0.1Win10 嗯, Qt这个开发环境有点难折腾,搞了我三天… 配…...

主流编程语言中ORM工具全解析

在不同编程语言中,ORM(Object-Relational Mapping,对象关系映射)工具的设计目标都是简化数据库操作。 以下是主流语言中最常用的 ORM 工具,按语言分类介绍其特点、适用场景和典型案例。 一、Python 生态 Python 社区…...

详解RabbitMQ工作模式之发布确认模式

​​​​​​​ 目录 发布确认模式 概述 消息丢失问题 发布确认的三种模式 实现步骤 应用场景 代码案例 引入依赖 常量类 单条确认 运行代码 批量确认 运行代码 异步确认 运行代码 对比批量确认和异步确认模式 发布确认模式 概述 发布确认模式用于确保消息已…...

Power BI 实操案例,将度量值转化为切片器(动态切换分析指标)

Power BI 实操案例,将度量值转化为切片器(动态切换分析指标) 想要在Power BI中让度量值也能像维度一样灵活筛选?没问题,这里就为你揭秘如何将度量值转化为切片器(动态切换分析指标)的实用方法&…...

利用散点图探索宇航员特征与太空任务之间的关系

利用散点图探索宇航员特征与太空任务之间的关系 import matplotlib.pyplot as plt import numpy as np import pandas as pdfrom flexitext import flexitext from matplotlib.patches import FancyArrowPatchplt.rcParams.update({"font.family": "Corbel&quo…...

人工智能的哲学与社会影响

人工智能(AI)的快速发展对人类社会的方方面面产生了深远的影响。在这部分中,我们将探讨AI对人与机器关系的影响、AI对就业和经济的潜在影响,以及人类与AI共存的可能性和道德议题。同时,我们还将针对大众对AI的一些常见…...

MySQL 中 UPDATE 结合 SELECT 和 UPDATE CASE WHEN 的示例

概述 以下是 MySQL 中 UPDATE 结合 SELECT 和 UPDATE CASE WHEN 的示例: 一、UPDATE 结合 SELECT(跨表更新) 场景:根据 orders 表中的订单总金额,更新 users 表中用户的 total_spent 字段。 -- 创建测试表 CREATE T…...

FPGA前瞻篇-计数器设计与实现实例

这是本篇文章的设计目标如下所示: 这个 Counter 模块是一个LED 闪烁计数器,设计目标是: 当输入时钟 clk 为 50 MHz 时,每 0.5 秒翻转一次 LED 灯状态。 随后我们开始补充理论知识。 计数是一种最简单基本的运算,计数器…...

运行Spark程序-在Idea中(二)

(四)使用Maven创建新项目 核心的操作步骤如下: 1.启动idea,选择新建项目。 2.将Scala添加到全局库中。 3.设置maven依赖项。修改pom.xml文件,添加如下: 4.下载依赖。添加完成之后,刷新Maven,它…...

Mosaic数据增强技术

Mosaic 数据增强技术是一种在计算机视觉领域广泛应用的数据增强方法。下面是Mosaic 数据增强技术原理的详细介绍 一、原理 Mosaic 数据增强是将多张图像(通常是 4 张)按照一定的规则拼接在一起,形成一张新的图像。在拼接过程中,会…...

Kafka、RabbitMQ 和 RocketMQ区别及上手难度

Kafka、RabbitMQ 和 RocketMQ 是三种流行的消息中间件,它们在设计理念、使用场景和上手难度上有显著差异。以下是它们的核心区别和上手难度分析: 1. 核心区别 特性KafkaRabbitMQRocketMQ设计目标高吞吐、分布式日志流处理通用的消息队列,强调…...

.NET 8 + Angular WebSocket 高并发性能优化

.NET 8 Angular WebSocket 高并发性能优化。 .NET 8 WebSocket 高并发性能优化 WebSocket 是一种全双工通信协议,允许客户端和服务端之间保持持久连接。在高并发场景下,优化 WebSocket 的性能至关重要。以下是针对 .NET 8 中 WebSocket 高并发性能优化…...

SimScape物理建模实例1--单质量-弹簧-阻尼系统

实例1模型下载: 【免费】simscape单质量弹簧阻尼模型资源-CSDN文库 如下图所示单质量弹簧阻尼系统,弹簧具有初始压缩量,假设为1m, 质量块除了受到自身重力作用以外,受到弹簧拉力,以及阻尼器阻尼力,根据牛顿…...

5.5.1 WPF中的动画2-基于路径的动画

何为动画?一般只会动。但所谓会动,还不仅包括位置移动,还包括角度旋转,颜色变化,透明度增减。动画本质上是一个时间段内某个属性值(位置、颜色等)的变化。因为属性有很多数据类型,它们变化也需要多种动画类比如: BooleanAnimationBase\ ByteAnimationBase\DoubleAnima…...

JVM对象分配与程序崩溃排查

一、new 对象在 JVM 中的过程 在 JVM 中通过 new 关键字创建对象时,会经历以下步骤: 内存分配 对象的内存分配在 堆(Heap) 中,优先在 新生代(Young Generation) 的 Eden 区 分配。分配方式取决…...

基于RT-Thread驱动EEPROM_AD24C02

基于RT-Thread驱动EEPROM_AD24C02 前言一、硬件设计二、软件设计三、测试1、eeprom_test()测试2、基础操作字节实验3、多字节读写 前言 存储容量2048位,内部组织256x8(2K),即256个字节的存储单元&#xff…...

VUE中通过DOM导出PDF

最终效果 前端导出PDF的核心在于样式的绘制上,这里其实直接使用CSS进行绘制和布局就行,只不过需要计算好每页DIV盒子的大小,防止一页放不下造成样式错乱。 项目依赖 项目是Vue3 TS npm i html2canvas1.4.1 npm i jspdf3.0.1工具类(htmlToPdf…...

sql语句面经手撕(定制整理版)

一张表 店铺id 商品id 销售数量 问:查询总销售数量最多的店铺 SELECT shop_id,SUM(quantity) AS total_quantity FROM sales GROUP BY shop_id ORDER BY total_quantity DESC LIMIT 1; 学生总分名最高的 SELECT student_id,SUM(score) AS total_score FROM score…...

pdf 不是扫描件,但却无法搜索关键词【问题尝试解决未果记录】

一、不是扫描件但不能搜索的原因 1. 情况一:文字被转成了“图形文字” 有些PDF文件虽然看起来像是文字,其实是图片或者矢量图格式,不能直接搜索。 2. 情况二:PDF被加密 有些PDF设置了“内容复制/提取”权限受限,即使…...

android14优化ntp时间同步

简介 网络时间协议NTP(Network Time Protocol)是TCP/IP协议族里面的一个应用层协议,用来使客户端和服务器之间进行时钟同步,提供高精准度的时间校正。 当机器的ntp时间同步出现问题时,可以从ntp配置方面进行优化&…...

【Ansible】之inventory主机清单

前言 本篇博客主要解释Ansible主机清单的相关配置知识 一、inventory 主机清单 Inventory支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机组内。 如果是名称类似的主机,可以使用列表的方式表示各个主机…...

QT5.14安装以及新建基础项目

进入qt中文网站:Qt | 软件开发全周期的各阶段工具 额,考虑新手可能还是找不到,我就分享一下我下载的的吧 通过网盘分享的文件:qt-opensource-windows-x86-5.14.2.exe 链接:https://pan.baidu.com/s/1yQTRp-b_ISje5B3UWb7Apw?pw…...

Git 用法总结

换到新项目组后,没有好好使用git 。有点疲劳了。 不过还是建议能提尽提。少提 多提。与己方便。与人方便 1,拉取最新分支后。先不要直接改代码,可以根据修改需求。创建本地分支 git checkout -b feature/wlan 。 然后你改代码。改了后。合…...

付费专栏·Python潮流周刊电子书合集(epub、pdf、markdown)下载

付费专栏 Python 潮流周刊目前年费 148,全年约 50 期。 这里分享的是前 60 期的精美电子书,包含有多种不同版本(epub、pdf 和 markdown),免费下载(下载方式见文末)。 展示 pdf 版本的部分精美…...

o.redisson.client.handler.CommandsQueue : Exception occured. Channel

1&#xff0c; 版本 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>2.15.2</version> </dependency>2&#xff0c;问题 2025-05-12 10:46:47.436 ERROR 27780 --- [sson-netty-5-…...

养生:拥抱健康生活的全方位指南

养生是一种综合性的健康管理方式&#xff0c;旨在通过多种方法颐养生命、增强体质、预防疾病&#xff0c;以实现延年益寿的目标1。以下为你详细介绍养生的各个方面&#xff1a; 心态养生&#xff1a;塑造健康心灵的基石 保持积极心态&#xff1a;积极的心态能提升生活质量&am…...

CSS3 伪元素(Pseudo-elements)大全

CSS3 伪元素&#xff08;Pseudo-elements&#xff09;大全 CSS3 伪元素用于选择元素的特定部分&#xff0c;以双冒号 :: 开头&#xff08;CSS3 规范推荐写法&#xff0c;但单冒号 : 也支持以保持向后兼容&#xff09;。 主要 CSS3 伪元素列表 ::before 在元素内容前插入生成的…...

养生:开启健康生活的全新篇章

养生是一场关乎生活品质与身心健康的持续修行&#xff0c;从饮食调养到运动锻炼&#xff0c;从睡眠管理到心态塑造&#xff0c;每个环节都对健康有着深远影响。以下为你提供全面且实用的养生指南。 饮食养生&#xff1a;科学膳食&#xff0c;滋养生命 合理的饮食是养生的根基…...

解读RTOS:第一篇 · RTOS 基础与选型指南

1. 引言 在嵌入式系统开发中,随着产品功能的不断丰富和系统复杂度的急剧上升,裸机循环往复的 main() 与中断驱动模式已难以满足项目的实时响应、任务隔离与资源管理需求。RTOS(实时操作系统)因其对任务管理、调度和通信机制的内建支持,成为越来越多嵌入式产品的首选。本文…...

基于Vue3.0的高德地图api教程005:实现绘制线并编辑功能

文章目录 6、绘制多段线6.1 绘制多段线6.1.1 开启绘制功能6.1.2 双击完成绘制6.1.3 保存到数据库6.2 修改多段线6.2.1 点击线,进入编辑模式6.2.2 编辑线6.3 完整代码6、绘制多段线 6.1 绘制多段线 6.1.1 开启绘制功能 实现代码: const changeSwitchDrawPolyline = ()=>…...

C++ asio网络编程(5)简单异步echo服务器

上一篇文章:C asio网络编程(4)异步读写操作及注意事项 文章目录 前言一、Session类1.代码2.代码详解3.实现Session类1.构造函数2.handle_read3.介绍一下boost的封装函数和api4.handle_write 二、Server类1.代码2.代码思路详解 三、客户端四、运行截图与流程图 前言 提示&…...

VBA会被Python代替吗

VBA不会完全被Python取代、但Python在自动化、数据分析与跨平台开发等方面的优势使其越来越受欢迎、两者将长期并存且各具优势。 Python以其易于学习的语法、强大的开源生态系统和跨平台支持&#xff0c;逐渐成为自动化和数据分析领域的主流工具。然而&#xff0c;VBA依旧在Exc…...

在Web应用中集成Google AI NLP服务的完整指南:从Dialogflow配置到高并发优化

在当今数字化客服领域,自然语言处理(NLP)技术已成为提升用户体验的关键。Google AI提供了一系列强大的NLP服务,特别是Dialogflow,能够帮助开发者构建智能对话系统。本文将详细介绍如何在Web应用中集成这些服务,解决从模型训练到高并发处理的全套技术挑战。 一、Dialogflow…...

Linux服务器连接SSH工具FinalShell安装使用支持Linux文件上传下载

前言 记录连接Linux服务器SSH工具FinalShell&#xff0c;支持可视化上传下载及查看服务器负载状态 安装使用 安装地址 官网下载:https://finalshell-ssh.com/ 通过网盘分享的文件&#xff1a;shell 链接: https://pan.baidu.com/s/1ZFcD_Js-r_lE3IV8wuuA5A?pwde72f 提取码:…...

【Java ee初阶】IP协议

网络层 IP 协议 1) 地址管理 针对网络上的各种设备&#xff0c;所在的位置&#xff0c;进行描述和区分 > IP 地址 2) 路由选择 网络结构非常复杂 挑选出合适的路径 IP 协议的报文结构 ipv4 ipv6 其他版本没有大规模推广使用~~ IP 协议中&#xff0c;报头也是变长的&a…...

WSL-Ubuntu 中安装 Git LFS 记录

#记录工作 一、问题背景 在 Windows Subsystem for Linux&#xff08;WSL&#xff09;的 Ubuntu 环境下进行开发时&#xff0c;当我们需要管理 Git 仓库中的大文件&#xff0c;使用 Git LFS&#xff08;Large File Storage&#xff09;是一个很好的解决方案。但在执行git lfs…...

Ubuntu源码版comfyui的安装

Comfyui也出桌面版了&#xff0c;但是想让大家多个人都使用怎么办呢&#xff1f;也有方法&#xff0c;安装Linux版&#xff0c;启动后会生成个网页地址&#xff0c;打开就能用了。 1、先来看下本地安装环境配置&#xff1a; 系统&#xff1a;Ubuntu 22.04 内存&#xff1a;2…...

Clang实现C++文件分析,含Python实战

最近的项目&#xff0c;需要获取到C代码中的Git修改过的函数信息&#xff0c;决定通过抽象语法树AST的方式&#xff0c;分析出文件内容后&#xff0c;通过匹配git diff修改的行号信息得知是什么函数。了解到Clang 能够进行C、C代码的分析&#xff0c;记录一下。 一、Clang AST…...

MFC listctrl修改背景颜色

在 MFC 中修改 ListCtrl 控件的行背景颜色&#xff0c;需要通过自绘&#xff08;Owner-Draw&#xff09;机制实现。以下是详细的实现方法&#xff1a; 方法一&#xff1a;通过自绘&#xff08;Owner-Draw&#xff09;实现 步骤 1&#xff1a;启用自绘属性 在对话框设计器中选…...

[Git]ssh模式每次提交都要输入密码

问题描述 连接用的ssh&#xff0c;不是https。每次git提交都要输入密码&#xff0c;很麻烦。 原因分析 ssh模式需要在git服务端保存密钥&#xff0c;不然每次都会校验用户的身份。 解决方案 1.生成密钥 进到用户路径下 C:\Users\szx\, 打开bash 生成密钥&#xff1a; s…...

请解释 React Native 的新架构(Fabric 和 TurboModules)与旧架构的主要区别

React Native 的新架构&#xff08;Fabric 和 TurboModules&#xff09;是对旧架构的重大革新&#xff0c;主要解决了旧架构在性能、线程模型和原生互操作性等方面的瓶颈。以下是新旧架构的核心区别&#xff1a; 1. 线程模型与异步通信 旧架构&#xff1a; 三层线程模型&…...

大小端的判断方法

大小端&#xff08;Endianness&#xff09; 是计算机存储多字节数据&#xff08;如整数、浮点数&#xff09;时的两种不同方式&#xff0c;决定了字节在内存中的排列顺序。 1. 大端&#xff08;Big-Endian&#xff09; 高位字节存储在低地址&#xff0c;低位字节存储在高地址。…...

技术视界 | 青龙机器人训练地形详解(四):复杂地形精讲之斜坡

在前几篇文章中&#xff0c;我们依次讲解了如何创建一个地形、如何将地形添加到训练环境中&#xff0c;并在上一期深入分析了复杂地形之一——台阶地形的创建方式与训练意义。本文将继续聚焦复杂地形训练中另一类代表性地形——斜坡&#xff08;Slope&#xff09;与金字塔斜坡&…...

典籍知识问答重新生成和消息修改Bug修改

1.Bug&#xff1a; {messageId: "temp-user-1747051925999",…} messageId : "temp-user-1747051925999" newContent : "关于选中的内容&#xff1a;\"The ancient people lived long by following natural laws\"&#xff0c;我的问题是&…...

交易所开发-如何开发一个交易所

交易所开发全流程指南&#xff1a;从架构设计到合规落地 ——2025年数字资产交易平台的构建逻辑与技术实践 一、开发核心流程&#xff1a;五阶段方法论 1. 需求定位与合规先行 市场细分&#xff1a;明确交易所类型&#xff08;CEX、DEX或混合型&#xff09;&#xff0c;选择目…...

工具篇-如何在Github Copilot中使用MCP服务?

Model Context Protocol (MCP) 是由 Anthropic 公司于 2024 年 11 月推出的一种开放协议标准&#xff0c;目的在于标准化 LLM 与外部数据源、工具及服务之间的交互方式。 MCP 被广泛类比为 “AI 领域的 USB-C 接口 ”。 一、vscode的安装 下载vscode Visual Studio …...

MATLAB机器人系统工具箱中的loadrobot和importrobot

loadrobot和importrobot是 MATLAB 机器人系统工具箱中用于创建机器人模型的两个核心函数&#xff0c;它们的主要区别可以从以下几个方面来理解&#xff1a; 1. 模型来源 loadrobot 直接加载工具箱预定义的机器人模型&#xff08;如 UR5e、Panda、Kinova 等&#xff09;。这些模…...

django之视图

django vs drf 首先要区分django 和 django rest framework(drf)。 django是前后端不分离的&#xff0c;后端写模板&#xff08;template&#xff09;渲染成html之后返回给浏览器。 drf是适应前后端分离的架构&#xff0c;基于django做的封装&#xff0c;提供的rest API规范…...

深入探讨dubbo组件的实践

目录 1、dubbo概述 1.1、介绍 1.2、RPC 1.3、区别 1.4、优点 2、dubbo分层 2.1、层级分类 1. Service 服务层&#xff08;业务层&#xff09; 2. Config 配置层 3. Proxy 服务代理层 4. Registry 注册中心层 5. Cluster 集群容错层 6. Monitor 监控层 7. Protoco…...