Appium移动端自动化测试实战:从环境配置到项目落地全解析
1. 项目概述为什么是Appium如果你是一名移动端测试工程师或者是一名希望将重复的App测试工作自动化的开发者那么“Appium”这个名字你一定不陌生。它几乎是目前移动端自动化测试领域的“瑞士军刀”尤其是在Android平台上。但很多新手在初次接触时往往会被其复杂的配置、各种报错和看似深奥的概念吓退。这篇文章的目的就是帮你拨开迷雾从一个一线从业者的角度手把手带你“一文明白”如何真正上手使用Appium把那些搜索热词里常见的坑比如[appium] no plugins have been installed、环境配置、与Airtest的对比等等都给你讲清楚。我们不止讲“怎么配”更会深入讲“为什么这么配”以及在实际项目中如何稳定、高效地使用它。简单来说Appium是一个开源的、跨平台的自动化测试框架。它的核心魅力在于“一次编写到处运行”——你可以用同一套WebDriver API如果你熟悉Selenium那上手会非常快来编写测试脚本然后通过Appium Server这个中间层去驱动Android、iOS甚至Windows桌面应用。对于Android而言它底层依赖的是Google官方提供的UI Automator用于Android 4.3和Instrumentation框架这意味着它的能力是官方“认证”的稳定性和兼容性有基础保障。面对热词中提到的“AI自动化测试”、“Codeless自动化测试”等新概念Appium作为经典的代码驱动框架依然是构建稳定、可维护自动化测试体系的基石。2. 核心思路与工具选型背后的考量2.1 为什么选择Appium而非其他工具在热词中经常看到有人对比“Appium和AirtestPoco框架哪个好”。这是一个非常好的问题也直接关系到你的技术选型。我的选择逻辑是这样的Appium的优势在于标准化和生态。它基于WebDriver协议W3C标准这意味着它的API是标准化的学习资料尤其是Selenium的庞大社区可以复用。它的测试脚本比如用Python写的结构清晰易于集成到CI/CD持续集成/持续部署流水线中适合中大型项目需要长期维护的自动化测试套件。当你需要做数据驱动测试、复杂的业务流程验证或者与后端API测试结合时Appium的编程灵活性是巨大的优势。AirtestPoco的优势在于快速、可视化和对游戏的支持。Airtest的图像识别能力对于测试一些难以定位元素比如游戏中的技能图标、自定义控件的场景非常有用它的IDE也提供了录屏和脚本生成功能上手更快。Poco则提供了另一种基于UI控件树的定位方式。所以如果你的测试对象是重度游戏或者追求极快的原型搭建速度Airtest是很好的选择。但对于大多数标准的商业App特别是需要与开发流程深度集成的场景Appium的标准化和可编程性更胜一筹。关于“Codeless自动化测试”市面上有很多工具宣称可以无代码完成自动化。它们确实降低了入门门槛但在处理复杂逻辑、动态数据、异常流程和脚本复用性上往往力不从心。对于追求测试稳定性和工程化的团队具备编程能力的框架仍然是主流。Appium可以看作是“用代码获得最大控制权”的代表。2.2 Appium架构的简单拆解理解它如何工作理解架构能帮你更好地排查问题。Appium的工作模式是经典的C/S客户端/服务器架构你的测试脚本Client 用Python、Java、JavaScript等语言编写使用Selenium WebDriver库向Appium Server发送HTTP请求例如“点击这个按钮”、“获取这个文本框的文字”。Appium Server 它是一个用Node.js写的HTTP服务器接收来自Client的请求。它的核心工作是翻译把标准的WebDriver命令翻译成目标平台这里是Android能听懂的原生指令。Android设备/模拟器 Appium Server通过ADBAndroid Debug Bridge与设备通信并调用设备上的“自动化代理”如UIAutomator2 Server来实际执行操作。当你看到[appium] no plugins have been installed这样的警告时通常只是提示性信息不影响基础功能它是在说Appium Server没有加载额外的插件。大部分情况下你只需要核心功能可以忽略它。真正的错误往往出现在Server与设备通信、或者脚本与Server通信的环节。3. 环境配置详解从零搭建稳定可用的测试环境这是劝退新手的第一道坎。网上教程很多但经常因为版本不匹配、路径不对导致失败。我会给出一个经过大量项目验证的、清晰的配置流程和每个步骤的“为什么”。3.1 基础依赖安装JDK、Android SDK与Node.js1. 安装Java JDK (至少JDK 8)为什么需要Appium Server部分组件和Android的编译工具链依赖于Java环境。操作要点 从Oracle官网或AdoptOpenJDK下载并安装。安装后务必配置JAVA_HOME系统环境变量指向JDK安装根目录如C:\Program Files\Java\jdk-17并将%JAVA_HOME%\bin添加到PATH变量中。在命令行输入java -version验证。2. 安装Android SDK通过Android Studio为什么需要我们需要SDK中的两个关键工具adb与设备通信和build-tools用于打包测试用的APK。热词中“android studio安装教程”搜索量很高说明这是痛点。操作要点下载并安装Android Studio。在安装向导中确保勾选“Android SDK”和“Android SDK Platform”。安装完成后打开Android Studio进入“Settings” - “Appearance Behavior” - “System Settings” - “Android SDK”。在“SDK Platforms”选项卡中勾选你目标测试Android版本对应的API Level例如Android 13的“Tiramisu” API 33。在“SDK Tools”选项卡中勾选“Android SDK Build-Tools”、“Android SDK Platform-Tools”包含adb和“Android SDK Tools”。关键环境变量ANDROID_HOME 指向Android SDK的根目录例如C:\Users\YourName\AppData\Local\Android\Sdk。注意新版本SDK可能更推荐使用ANDROID_SDK_ROOT但设置ANDROID_HOME通常兼容性更好。将%ANDROID_HOME%\platform-tools和%ANDROID_HOME%\tools或%ANDROID_HOME%\tools\bin添加到PATH变量中。验证 打开新的命令行窗口输入adb version应能显示版本号。3. 安装Node.js为什么需要Appium Server是基于Node.js运行的。操作要点 从Node.js官网下载LTS长期支持版本安装。安装时会自动将npmNode.js包管理器添加到PATH。安装后在命令行输入node -v和npm -v验证。3.2 安装Appium Server的两种主流方式方式一通过npm安装推荐给开发者npm install -g appium安装后在命令行输入appium -v验证。这种方式安装的是Appium的核心服务。如果需要驱动Android我们还需要安装一个专门的“驱动”Driver这是Appium 2.0之后的架构变化模块更清晰。方式二使用Appium Desktop推荐给初学者或需要 Inspector 的用户从Appium官网下载Appium Desktop图形化客户端。它集成了Server和一个非常重要的工具——Appium Inspector。Inspector用于查看应用的元素层级和属性是编写脚本时定位元素的必备利器。启动Appium Desktop后它会在后台启动一个Server。注意 即使使用Appium Desktop也依然需要完成上述JDK和Android SDK的配置否则无法驱动Android设备。3.3 安装UIAutomator2驱动Appium 2.0 必须步骤这是针对热词中“appium安装及环境配置”的一个关键补充点。在Appium 1.x时代UIAutomator2支持是内置的。在2.0版本后它被拆分为独立的插件驱动。appium driver install uiautomator2这条命令会下载并安装用于Android自动化最核心的UIAutomator2驱动。你可以通过appium driver list来查看已安装的驱动。3.4 连接真机或模拟器对于真机在手机的“开发者选项”中开启“USB调试”。如何开启开发者选项通常在“关于手机”中连续点击“版本号”7次。用USB线连接电脑和手机。在命令行输入adb devices你应该能看到设备序列号后面跟着device字样。如果显示unauthorized查看手机屏幕是否弹出“允许USB调试”的授权弹窗对应热词“android usb授权弹窗弹出”点击允许。对于模拟器 如果你使用Android Studio自带的AVD Manager创建了虚拟设备启动模拟器后同样使用adb devices命令应该能看到一个类似于emulator-5554的设备。至此你的基础环境就准备好了。这个过程看似步骤多但每一步都有其明确目的搭建一次后即可长期使用。4. 第一个自动化测试脚本实战从元素定位到断言让我们用一个最简单的例子串联起整个工作流。假设我们要测试手机上的“计算器”App完成一个“123”的运算验证。4.1 使用Appium Inspector定位元素在编写脚本前我们必须知道要操作哪些按钮元素。这就是Inspector的用武之地。启动Appium Server通过命令行appium或Appium Desktop。启动Appium Inspector独立程序或集成在Appium Desktop中。在Inspector中配置“Desired Capabilities”会话所需能力这是一个JSON对象告诉Appium Server你要测试什么应用、在什么设备上测试。一个最基本的配置如下{ platformName: Android, appium:platformVersion: 13, // 你的设备系统版本 appium:deviceName: 你的设备名或emulator-5554, // 通过adb devices获取 appium:automationName: UIAutomator2, // 指定驱动 appium:appPackage: com.android.calculator2, // 计算器包名 appium:appActivity: com.android.calculator2.Calculator // 计算器主Activity }appPackage和appActivity如何获取对于系统应用可以网上搜索。对于自己开发的应用问开发同事。也可以通过adb shell命令在设备上抓取当前前台应用的信息。点击“Start Session”Inspector会启动计算器App并在右侧显示当前界面的UI控件树。你可以点击界面上的元素右侧会高亮对应的控件节点并显示其所有属性如resource-id、text、content-desc、class等。这些属性就是我们后续定位元素的依据。4.2 编写Python测试脚本我们使用Python的selenium库Appium扩展了它来编写客户端脚本。首先安装客户端库pip install Appium-Python-Client然后创建测试脚本test_calculator.pyfrom appium import webdriver from appium.webdriver.common.appiumby import AppiumBy import time # 1. 定义Desired Capabilities与Inspector中的配置基本一致 desired_caps { platformName: Android, appium:platformVersion: 13, appium:deviceName: emulator-5554, # 替换为你的设备 appium:automationName: UIAutomator2, appium:appPackage: com.android.calculator2, appium:appActivity: com.android.calculator2.Calculator, # 可选防止每次重置App提升测试速度 appium:noReset: True } # 2. 连接Appium Server。Server默认监听本地4723端口。 driver webdriver.Remote(http://localhost:4723, desired_caps) try: # 等待应用界面稳定 time.sleep(2) # 3. 定位元素并操作 # 点击数字1通常可以通过resource-id定位这里用文本作为示例 digit_1 driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR, new UiSelector().text(1)) digit_1.click() # 点击加号 plus_btn driver.find_element(AppiumBy.ACCESSIBILITY_ID, plus) # 很多计算器按钮有content-desc # 如果ACCESSIBILITY_ID不行可以尝试AppiumBy.ANDROID_UIAUTOMATOR, new UiSelector().description(plus)) plus_btn.click() # 点击数字2 digit_2 driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR, new UiSelector().text(2)) digit_2.click() # 点击等号 equals_btn driver.find_element(AppiumBy.ACCESSIBILITY_ID, equals) equals_btn.click() # 4. 断言验证结果 # 定位结果框。计算器的结果通常显示在一个TextView里可能有特定的resource-id如com.android.calculator2:id/result # 这里我们假设通过CLASS和文本内容组合定位 result_field driver.find_element(AppiumBy.CLASS_NAME, android.widget.TextView) # 实际项目中需要更精确的定位。这里仅为演示。 result_text result_field.text print(f计算结果为{result_text}) # 简单的断言 assert 3 in result_text, f断言失败期望结果包含3实际得到{result_text} print(测试通过123) except Exception as e: print(f测试过程中发生错误{e}) # 这里可以加入截图操作便于排查问题 # driver.save_screenshot(error_screenshot.png) finally: # 5. 无论测试成功与否最后都要关闭会话释放资源 driver.quit()脚本解析与定位策略AppiumBy.ANDROID_UIAUTOMATOR: 这是Android平台最强大、最常用的定位方式。它使用UiSelector API可以通过文本、描述、类名、资源ID等多种方式组合定位语法灵活。new UiSelector().text(1)就是查找文本为“1”的元素。AppiumBy.ACCESSIBILITY_ID: 在Android中这对应元素的content-desc属性。这是为无障碍功能设计的如果开发同学填写了将是极好的定位标识因为它通常唯一且稳定。AppiumBy.CLASS_NAME: 对应元素的class属性如android.widget.Button。但通常一个界面同类元素太多需要结合其他条件使用。最佳实践优先使用resource-id在代码中对应AppiumBy.ID因为它通常是开发人员赋予的唯一标识最稳定。其次是content-desc无障碍ID。最后才考虑文本和坐标等容易变化的属性。运行这个脚本前确保Appium Server已在运行并且设备已连接且可用。在命令行执行python test_calculator.py你应该能看到计算器被自动操作并输出断言结果。5. 核心能力进阶与最佳实践掌握了基础操作后要写出健壮、可维护的测试脚本还需要了解更多。5.1 等待机制解决元素找不到的“玄学”问题脚本执行速度远快于界面渲染速度直接查找元素经常导致“NoSuchElementException”。必须使用等待。1. 隐式等待 (Implicit Wait)在创建driver后设置一个全局的等待时间在查找任何元素时如果找不到driver会轮询查找直到超时。driver.implicitly_wait(10) # 单位秒注意隐式等待只对find_element方法有效且设置一次对整个driver生命周期有效。不宜设置过长会影响整体测试速度。2. 显式等待 (Explicit Wait)更推荐的方式。针对某个特定条件进行等待条件满足后立即继续执行更灵活高效。使用WebDriverWait和expected_conditions。from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 等待“确定”按钮出现并可点击最多等10秒 ok_button WebDriverWait(driver, 10).until( EC.element_to_be_clickable((AppiumBy.ID, com.example:id/btn_ok)) ) ok_button.click()这是处理动态加载界面、弹窗等场景的利器。5.2 处理常见控件和特殊操作输入文本element.send_keys(“your text”)清空输入框element.clear()滑动/滚动from appium.webdriver.common.touch_action import TouchAction action TouchAction(driver) # 从屏幕中央向下滑动 action.press(x500, y1000).wait(200).move_to(x500, y200).release().perform()更简单的方式是使用driver.swipe()或driver.scroll()已废弃或由swipe替代。Appium 2.0推荐使用W3C Actions API但TouchAction目前仍广泛使用。返回键、Home键、最近任务键driver.press_keycode(4) # 返回键 (KEYCODE_BACK) driver.press_keycode(3) # Home键 (KEYCODE_HOME) driver.press_keycode(187) # 最近任务键 (KEYCODE_APP_SWITCH)启动其他App或Activity# 启动一个Activity driver.start_activity(“com.tencent.mm”, “.ui.LauncherUI”) # 包名, Activity名 # 回到测试App driver.back()5.3 测试框架集成让自动化更工程化单独运行一个脚本不是终点。我们需要将其集成到测试框架中管理用例、生成报告、处理前置后置条件。pytest是Python生态中最主流的选择。安装pytestpip install pytest组织用例 按照pytest的规则函数以test_开头或类以Test开头编写测试函数/方法。使用Fixture管理Driver生命周期 这是关键。我们可以创建一个conftest.py文件定义driver的初始化和清理逻辑供所有测试用例使用。# conftest.py import pytest from appium import webdriver pytest.fixture(scopesession) # 整个测试会话只启动一次driver def appium_driver(): desired_caps { ... } # 你的配置 driver webdriver.Remote(http://localhost:4723, desired_caps) driver.implicitly_wait(10) yield driver # 将driver对象提供给测试用例 driver.quit() # 所有用例执行完毕后退出编写测试类# test_calculator_advanced.py class TestCalculator: def test_addition(self, appium_driver): # 通过参数接收fixture driver appium_driver # ... 你的测试步骤 ... assert result “3” def test_subtraction(self, appium_driver): # 另一个测试用例 pass运行与报告 使用pytest test_calculator_advanced.py -v运行测试并可以集成pytest-html等插件生成漂亮的HTML测试报告。6. 典型问题排查与实战避坑指南结合热词中的高频问题这里整理一份“实战避坑清单”。6.1 环境与连接类问题问题adb devices列表为空或设备状态为unauthorized。排查 检查USB线是否完好检查手机是否已开启“USB调试”和“USB调试安全设置”检查电脑是否安装了正确的手机USB驱动重启adb服务adb kill-server然后adb start-server重新插拔USB线并务必点击手机上的授权弹窗。问题 启动Appium Session失败报错Could not find a driver for...。排查 确认automationName已设置为UIAutomator2。确认已通过appium driver install uiautomator2安装了驱动。检查Appium Server日志看是否有驱动加载错误。问题 脚本执行时报WebDriverException: Unable to create new remote session。排查 首先检查Appium Server是否正在运行命令行或桌面版。检查Desired Capabilities中的appPackage和appActivity是否正确特别是Activity名是否包含开头的点。检查设备名deviceName是否与adb devices列出的一致。6.2 元素定位与交互类问题问题 最常见的NoSuchElementException。排查思路等了吗首先检查是否添加了足够的等待显式等待最佳。定位器对吗使用Appium Inspector重新捕获元素确认使用的定位策略和属性值在当前页面下是否唯一。注意文本内容可能包含空格或换行。页面变了吗是否发生了页面跳转、弹窗覆盖或上下文切换如进入WebView需要适时更新你的定位上下文。在正确的“上下文”里吗对于混合应用Hybrid App内的WebView需要先用driver.contexts获取所有上下文然后切换到对应的WebView上下文driver.switch_to.context(‘WEBVIEW_com.example’)后才能定位网页元素。问题 元素找到了但click()不生效。排查 元素可能被遮挡、不可点击、或者需要长按。可以尝试使用TouchAction进行精确坐标点击TouchAction(driver).tap(x100, y200).perform()。尝试先element.click()如果不行用driver.execute_script(‘mobile: clickGesture’, {‘elementId’: element.id})执行原生点击手势。检查是否触发了其他监听事件可以尝试element.send_keys(Keys.ENTER)。6.3 性能与稳定性提升技巧使用noReset和fullReset能力noReset: True可以在会话间保留App数据避免重复登录大幅提升测试速度。fullReset: True则会在每次会话后彻底清除App数据。根据测试场景选择。截图与日志 在关键步骤或断言失败时自动截图是排查问题的黄金手段。driver.save_screenshot(‘path/to/screenshot.png’)。同时合理配置Appium Server的日志级别将日志输出到文件便于分析。并行测试 当用例很多时可以考虑并行执行。这需要启动多个Appium Server实例绑定不同端口如4723 4724并在测试脚本中指定不同的deviceName和Server地址。结合pytest的pytest-xdist插件可以实现。封装Page Object模式 这是UI自动化测试的经典设计模式。将每个页面封装成一个类页面的元素定位和基本操作作为类的方法。测试脚本只调用这些方法不直接包含定位器。这样当UI发生变化时只需修改对应的Page类测试脚本几乎不用动极大提升了可维护性。7. 在真实项目中的落地思考最后分享几点从项目实践中得来的体会这可能是比具体技术细节更重要的东西。自动化测试的定位 不要为了自动化而自动化。它的核心价值是回归测试——确保新功能不破坏旧功能以及重复性任务如冒烟测试。它不适合探索性测试和UI频繁变动的早期功能测试。在热词中搜索“自动化测试占比一般是多少”这没有标准答案但一个健康的测试金字塔中UI自动化应该是塔尖占比最小但运行最稳定。稳定性的头号敌人变化。UI元素的变化、网络状态、设备性能、弹窗干扰都会导致测试失败。因此除了技术上的等待、重试机制更重要的是流程。需要与开发团队建立良好的沟通机制UI定稿后再编写自动化脚本元素变更时及时同步。对于不可控的第三方弹窗如权限申请、升级提示可以在测试脚本中加入智能判断和处理逻辑或者通过修改测试机环境禁用某些应用来规避。维护成本 自动化测试代码也是代码需要设计、评审、维护。采用Page Object模式、将测试数据外部化如用YAML/JSON文件管理、编写清晰的文档和注释这些工程实践能有效降低长期维护成本。从“会写”到“写好” 初期能跑通脚本就是胜利。但随着用例增多就要考虑如何组织用例结构、如何生成直观的报告、如何集成到CI/CD pipeline中例如Jenkins, GitLab CI实现代码提交后自动触发回归测试并快速反馈结果。移动端自动化测试尤其是Android因为其碎片化系统版本、厂商ROM、屏幕尺寸确实比Web自动化更具挑战。但Appium以其标准化的协议和强大的社区生态仍然是应对这些挑战最有力的武器之一。希望这篇长文能帮你建立起从环境搭建到项目实战的完整认知少走一些我当年走过的弯路。真正的精通始于第一个能稳定运行的脚本成长于不断解决一个又一个“坑”的过程。

相关新闻

游戏SDK接入工程实践与避坑指南

游戏SDK接入工程实践与避坑指南

1. 游戏SDK接入的"装修清单"思维第一次接触游戏SDK接入时,我被各种配置文件和接口文档搞得晕头转向。直到有天盯着新房装修清单,突然意识到——SDK接入不就是给游戏"装修"吗?每个环节都需要精心规划,就像装修…

2026/8/3 14:28:04 阅读更多 →
IMX219摄像头从硬件连接到AI应用:树莓派视觉开发全攻略

IMX219摄像头从硬件连接到AI应用:树莓派视觉开发全攻略

1. 项目概述:IMX219摄像头与它的舞台如果你玩过树莓派,或者捣鼓过一些需要“眼睛”的嵌入式项目,那你大概率听说过IMX219这颗传感器。它不是什么新鲜玩意儿,但绝对是小型化、低成本视觉方案里的“常青树”。从早期的树莓派摄像头模…

2026/8/3 14:28:04 阅读更多 →
盗版CorelDRAW的隐性代价:从技术风险到职业发展的全面解析

盗版CorelDRAW的隐性代价:从技术风险到职业发展的全面解析

1. 项目概述:一次关于软件版权的深度探讨最近在几个设计交流群里,又看到有人在求所谓的“绿色版”、“破解版”CorelDRAW安装包,甚至还有人分享“完美激活”的教程。这让我想起多年前自己刚入行时,也曾为了省下几千块钱&#xff0…

2026/8/3 14:27:04 阅读更多 →

最新新闻

瑞云渲染大赛技术趋势与参赛指南

瑞云渲染大赛技术趋势与参赛指南

1. 项目概述:瑞云渲染大赛的行业影响力这个由国内头部云渲染平台主办的年度赛事已经走到了第五个年头,从最初的技术交流活动逐渐发展为CG行业的标杆性赛事。今年以"奇幻副本"为主题的创作方向,明显瞄准了当前游戏和影视行业对高质量…

2026/8/4 17:02:43 阅读更多 →
企业培训小程序开发哪个公司好,快来看看有没有你的心头好~

企业培训小程序开发哪个公司好,快来看看有没有你的心头好~

企业培训小程序开发哪个公司好,快来看看有没有你的心头好~ 去年广汽研究院联合起点课堂做了一轮内部赋能,把产品、运营类课程搬到了线上学习系统里,顺丰科技也连续三年用类似方式搭内部人才体系,覆盖400多人。 这类案例跑通后&…

2026/8/4 17:02:43 阅读更多 →
AnotherRedisDesktopManager:跨平台Redis桌面管理器的终极解决方案

AnotherRedisDesktopManager:跨平台Redis桌面管理器的终极解决方案

AnotherRedisDesktopManager:跨平台Redis桌面管理器的终极解决方案 【免费下载链接】AnotherRedisDesktopManager 🚀🚀🚀A faster, better and more stable Redis desktop manager [GUI client], compatible with Linux, Windows,…

2026/8/4 17:02:43 阅读更多 →
网易云音乐推荐算法优化工具的技术实现与应用

网易云音乐推荐算法优化工具的技术实现与应用

网易云音乐推荐算法优化工具的技术实现与应用 【免费下载链接】netease-cloud-fastplay 网易云音乐快速听歌,自定义听歌风格,一键刷听歌次数 项目地址: https://gitcode.com/gh_mirrors/ne/netease-cloud-fastplay 网易云音乐个性化纠正工具&…

2026/8/4 17:02:43 阅读更多 →
React入门指南:从环境搭建到核心Hook实践

React入门指南:从环境搭建到核心Hook实践

1. 为什么选择React作为前端开发起点三年前我刚从jQuery转向现代前端框架时,面对Angular、Vue和React三大选项,最终选择React的原因很简单——它的学习曲线最平缓。不同于Angular庞大的概念体系,React的核心API用一张A4纸就能列完。但真正让我…

2026/8/4 17:02:43 阅读更多 →
amz怎么用?新手卖家从注册到高效运营全流程指南

amz怎么用?新手卖家从注册到高效运营全流程指南

刚入行的跨境卖家最常问的一个问题是:"注册了亚马逊账号之后,接下来每天应该干什么?"这个问题背后是一个更本质的困惑——跨境运营的日常工作流到底是什么样的。我入行头三个月也有这个问题,每天打开电脑不知道该先做什…

2026/8/4 17:01:43 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →