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

protobuf使用

我下载的是

protobuf-27.4

以下使用vs2022

根据readme,执行如下命令

"C:\Program Files\CMake\bin\cmake.exe" -G "Visual Studio 17 2022"  -DCMAKE_INSTALL_PREFIX=C:\Users\x\Downloads\install  C:\Users\x\Downloads\protobuf-27.4  -Dprotobuf_BUILD_TESTS=OFF

他会报错说absl找不到,需要从网上下载一下absl的源码
abseil-cpp-20240722.0.zip

下载完之后,把压缩包里面的东西全部拖进C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp目录里面

然后重新执行上面那个命令

生成一个sln文件,打开之后,生成libprotobufd.lib文件

这里注意调整生成选项,要和你使用protobuf的项目的选项保持一致

在这里插入图片描述

同时需要把下图中划线的项目生成一下,生成选项也要保持一致
在这里插入图片描述

下面需要对测试项目进行配置

首先就是include目录,如下:

C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp
C:\Users\x\Downloads\protobuf-27.4\src

然后是linkrt选项的input

C:\Users\x\Downloads\protobuf-27.4\Debug\libprotobufd.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\types\Debug\absl_bad_any_cast_impl.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\types\Debug\absl_bad_optional_access.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\types\Debug\absl_bad_variant_access.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\base\Debug\absl_base.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\hash\Debug\absl_city.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\time\Debug\absl_civil_time.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\strings\Debug\absl_cord.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\strings\Debug\absl_cord_internal.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\strings\Debug\absl_cordz_functions.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\strings\Debug\absl_cordz_handle.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\strings\Debug\absl_cordz_info.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\strings\Debug\absl_cordz_sample_token.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\crc\Debug\absl_crc32c.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\crc\Debug\absl_crc_cord_state.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\crc\Debug\absl_crc_cpu_detect.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\crc\Debug\absl_crc_internal.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\debugging\Debug\absl_debugging_internal.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\debugging\Debug\absl_decode_rust_punycode.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\debugging\Debug\absl_demangle_internal.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\debugging\Debug\absl_demangle_rust.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\log\Debug\absl_die_if_null.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\debugging\Debug\absl_examine_stack.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\profiling\Debug\absl_exponential_biased.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\debugging\Debug\absl_failure_signal_handler.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\flags\Debug\absl_flags_commandlineflag.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\flags\Debug\absl_flags_commandlineflag_internal.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\flags\Debug\absl_flags_config.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\flags\Debug\absl_flags_internal.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\flags\Debug\absl_flags_marshalling.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\flags\Debug\absl_flags_parse.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\flags\Debug\absl_flags_private_handle_accessor.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\flags\Debug\absl_flags_program_name.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\flags\Debug\absl_flags_reflection.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\flags\Debug\absl_flags_usage.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\flags\Debug\absl_flags_usage_internal.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\synchronization\Debug\absl_graphcycles_internal.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\hash\Debug\absl_hash.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\container\Debug\absl_hashtablez_sampler.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\numeric\Debug\absl_int128.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\synchronization\Debug\absl_kernel_timeout_internal.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\debugging\Debug\absl_leak_check.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\log\Debug\absl_log_entry.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\log\Debug\absl_log_flags.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\log\Debug\absl_log_globals.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\log\Debug\absl_log_initialize.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\log\Debug\absl_log_internal_check_op.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\log\Debug\absl_log_internal_conditions.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\log\Debug\absl_log_internal_fnmatch.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\log\Debug\absl_log_internal_format.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\log\Debug\absl_log_internal_globals.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\log\Debug\absl_log_internal_log_sink_set.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\log\Debug\absl_log_internal_message.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\log\Debug\absl_log_internal_nullguard.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\log\Debug\absl_log_internal_proto.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\base\Debug\absl_log_severity.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\log\Debug\absl_log_sink.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\hash\Debug\absl_low_level_hash.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\base\Debug\absl_malloc_internal.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\profiling\Debug\absl_periodic_sampler.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\base\Debug\absl_poison.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\random\Debug\absl_random_distributions.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\random\Debug\absl_random_internal_distribution_test_util.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\random\Debug\absl_random_internal_platform.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\random\Debug\absl_random_internal_pool_urbg.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\random\Debug\absl_random_internal_randen.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\random\Debug\absl_random_internal_randen_hwaes.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\random\Debug\absl_random_internal_randen_hwaes_impl.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\random\Debug\absl_random_internal_randen_slow.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\random\Debug\absl_random_internal_seed_material.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\random\Debug\absl_random_seed_gen_exception.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\random\Debug\absl_random_seed_sequences.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\container\Debug\absl_raw_hash_set.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\base\Debug\absl_raw_logging_internal.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\base\Debug\absl_scoped_set_env.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\base\Debug\absl_spinlock_wait.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\debugging\Debug\absl_stacktrace.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\status\Debug\absl_status.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\status\Debug\absl_statusor.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\strings\Debug\absl_str_format_internal.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\base\Debug\absl_strerror.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\strings\Debug\absl_string_view.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\strings\Debug\absl_strings.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\strings\Debug\absl_strings_internal.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\debugging\Debug\absl_symbolize.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\synchronization\Debug\absl_synchronization.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\base\Debug\absl_throw_delegate.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\time\Debug\absl_time.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\time\Debug\absl_time_zone.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\debugging\Debug\absl_utf8_for_code_point.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\abseil-cpp\absl\log\Debug\absl_vlog_config_internal.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\utf8_range\Debug\utf8_range.lib
C:\Users\x\Downloads\protobuf-27.4\third_party\utf8_range\Debug\utf8_validity.lib

这样就可以了

相关文章:

protobuf使用

我下载的是 protobuf-27.4 以下使用vs2022 根据readme,执行如下命令 "C:\Program Files\CMake\bin\cmake.exe" -G "Visual Studio 17 2022" -DCMAKE_INSTALL_PREFIXC:\Users\x\Downloads\install C:\Users\x\Downloads\protobuf-27.4 -D…...

【微处理器系统原理与应用设计第十二讲】通用定时器设计二之PWM波实现呼吸灯的功能

一、基础知识 1、寄存器的配置 (1)GPIOX_AFRL:GPIO复用功能低位寄存器 GPIOX_AFRH:GPIO复用功能高位寄存器 (2)配置PA5 GPIOA->MODER(端口模式寄存器),10为复用功…...

2025秋招NLP算法面试真题(十九)-大模型分布式训练题目

目录: 理论篇 1.1 训练大语言模型存在问题? 1.2 什么是点对点通信? 1.3 什么是集体通信? 1.4 什么是数据并行? 1.5 数据并行如何提升效率? 1.6 什么是流水线并行? 1.7 什么是张量并行 (intra-layer)? 1.8 数据并行 vs 张量并行 vs 流水线并行? 1.9 什么是3D并行? 1.1…...

线程池的应用

1.线程的执行机制 线程分为用户线程 和 内核线程 内核线程就是系统级别的线程,与cpu逻辑处理器数量对应的 用户线程就是使用java代码创建的Thread对象 用户线程必须与内核线程关联(映射),才能执行任务 当用户线程多于内核线程时…...

OPenCV结构分析与形状描述符(5)查找图像中的连通组件的函数connectedComponents()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 connectedComponents 函数计算布尔图像的连通组件标签图像。 该函数接受一个具有4或8连通性的二值图像,并返回 N,即标签…...

HCIA--实验十三:VLAN间通信子接口实验/双单臂路由实验

一、实验内容 1.需求/要求: 将两个单臂路由通过两台交换机连接起来,成为双臂路由,并探讨这么做的原因。实现全网通,让任何一台主机之间都可以通信。 二、实验过程 1.拓扑图: 2.步骤: 1.给PC配置ip地址…...

AIStarter市场指南:项目分享与框架优化【AI绘画、写作、对话、办公、设计】

随着人工智能技术的飞速发展,越来越多的开发者和爱好者希望能够将自己的创意和项目分享给更多人。AIStarter作为一个专注于AI领域的平台,正致力于打造一个开放的应用市场,让创作者能够轻松分享他们的项目,同时也方便其他用户下载和…...

机器学习第8章 集成学习

目录 个体与集成BoostingBagging与随机森林Bagging随机森林 结合策略平均法投票法学习法 个体与集成 定义:集成学习,也叫多分类器系统、基于委员会的学习等,它是一种通过结合多个学习器来构建一个更强大的学习器的技术。如下图所示 在这里&a…...

京东鸿蒙上线前瞻——使用 Taro 打造高性能原生应用

背景 2024 年 1 月,京东正式启动鸿蒙原生应用开发,基于 HarmonyOS NEXT 的全场景、原生智能、原生安全等优势特性,为消费者打造更流畅、更智能、更安全的购物体验。同年 6 月,京东鸿蒙原生应用尝鲜版上架华为应用市场&#xff0c…...

day2 QT

作业 2> 在登录界面的登录取消按钮进行以下设置: 使用手动连接,将登录框中的取消按钮使用第2种方式的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt4版本的连接到自定义的槽函数中,在槽函数中判断…...

JS_函数声明

JS中的方法,多称为函数,函数的声明语法和JAVA中有较大区别 函数说明 函数没有权限控制符不用声明函数的返回值类型,需要返回在函数体中直接return即可,也无需void关键字参数列表中,无需数据类型调用函数时,实参和形参的个数可以不一致声明函数时需要用function关键字函数没有…...

快速排序+归并排序代码回顾

快速排序与归并排序简介: quick_sort为快速排序,merge_sort为归并排序,两者基于分治的思想; 快速排序,简称快排,它以原来数组中的一个值(我们记为x)作为界限,将比它小…...

DBC中一种特殊的特殊的Signal—多路复用Signal

前言: DBC设计中一般设计Signal时其实存在三种类型,如下图所示: **1)步骤1,鼠标单击展开Message,选中底下的Signal **2)步骤2,弹出dialog中选择 map signal **3)得到…...

前端基础面试题·第三篇——JavaScript(其三)

1.字符串 (1) 常用方法 1.charAt(index) 返回指定位置的字符,若没找到,则返回空2.charCodeAt(index) 返回指定位置的unicode字符编码,若没找到,则返回空 3.String.concat(str1,str2) 连接多个字符串,并返回新字符串4.String.fromCharCode(co…...

MacBook真的不能打游戏吗?Mac打游戏会损坏电脑吗?苹果电脑怎么玩游戏

MacBook从来都是高端的代名词,超强的性能搭配顶尖的系统,不光处理大型文件时举重若轻,长期使用也不会有明显卡顿。但很多人在需要MacBook一流的生产力同时,也希望能在空闲时体验游戏的乐趣。在大多人的印象里,Mac电脑对…...

安卓逆向(之)真机root(红米手机)

概览: 1, 手机解锁 2, 下载官方系统包,推荐线刷包,取出镜像文件 3, magisk工具修补 官方系统包 4, adb:命令对手机刷 root 5, 完成 6, 小米手机解锁 点击 小米手机解锁OEM官方教程 记得数据线连接手机电脑 工具下载 点击 下载adb(电脑操作…...

关于转行网络安全的一些建议

在当前就业形势下,不少朋友面临转行的困境。网络安全作为一个热门领域,自然也吸引了许多人的目光。本文将就转行网络安全这一话题,提供一些切实可行的建议。 网络安全行业概况 网络安全涵盖了从基础的脚本编写到高级的漏洞研究等多个层面。该…...

(六十五)第 10 章 内部排序(希尔排序)

示例代码 shellSort.h // // 希尔排序实现头文件#ifndef SHELL_SORT_H #define SHELL_SORT_H#include "errorRecord.h"#define NUM 10 #define MAX_SIZE 20#define EQUAL(a, b) ((a) == (b)) #define LESS_THAN(a, b) ((a) < (b)) #define LESS_OR_EQUAL(a, b) ((…...

802.11 中 scrambler的matlab仿真

802.11a和802.11n中的scrambler仿真不可以直接用matlab中的comm.Scrambler函数。因为这个函数实现的是multiplicative scrambling&#xff0c;而802.11a和802.11n中的scrambler使用的是additive scrambling。additive scrambling使用异或操作进行扰码&#xff0c;multiplicativ…...

centos 服务器 多网卡 ip 地址 设置

centos 服务器 多网卡 ip 地址 设置 https://blog.csdn.net/xh_w20/article/details/141574357 cd /etc/sysconfig/network-scripts/ sudo systemctl status network ● network.service - LSB: Bring up/down networkingLoaded: loaded (/etc/rc.d/init.d/network; bad; v…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...