鸿蒙语言基础类库:【@ohos.uitest (UiTest)】 测试

UiTest

UiTest提供模拟UI操作的能力,供开发者在测试场景使用,主要支持如点击、双击、长按、滑动等UI操作能力。

该模块提供以下功能:

  • [By]:提供控件特征描述能力,用于控件筛选匹配查找。
  • [UiComponent]:代表UI界面上的指定控件,提供控件属性获取,控件点击,滑动查找,文本注入等能力。
  • [UiDriver]:入口类,提供控件匹配/查找,按键注入,坐标点击/滑动,截图等能能力。

说明:
开发前请熟悉鸿蒙开发指导文档gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。
本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

import {UiDriver,BY,MatchPattern} from '@ohos.uitest'

By

UiTest框架通过By类提供了丰富的控件特征描述API,用以进行控件筛选来匹配/查找出目标控件。
By提供的API能力具有以下几个特点:
1、支持单属性匹配和多属性组合匹配,例如同时指定目标控件text和id。
2、控件属性支持多种匹配模式。
3、支持控件绝对定位,相对定位,可通过[By.isBefore]和[By.isAfter]等API限定邻近控件特征进行辅助定位。
By类提供的所有API均为同步接口,建议使用者通过静态构造器BY来链式创建By对象。

BY.text('123').type('button')

text

text(txt: string, pattern?: MatchPattern): By

指定目标控件文本属性,支持多种匹配模式,返回By对象自身。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
txtstring指定控件文本,用于匹配目标控件文本。
patternMatchPattern指定的文本匹配模式,默认为[EQUALS]

返回值:

类型说明
By返回By对象自身

示例:

let by = BY.text('123') //使用静态构造器BY创建by对象,指定目标控件的text属性。

key

key(key: string): By

指定目标控件key值属性,返回By对象自身。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
keystring指定控件的Key值。

返回值:

类型说明
By返回By对象自身。

示例:

let by = BY.key('123') //使用静态构造器BY创建by对象,指定目标控件的key值属性。

id

id(id: number): By

指定目标控件id属性,返回By对象自身。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
idnumber指定控件的id值。

返回值:

类型说明
By返回By对象自身。

示例:

let by = BY.id(123) //使用静态构造器BY创建by对象,指定目标控件的id属性。

type

type(tp: string): By

指定目标控件的控件类型属性,返回By对象自身。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
tpstring指定控件类型。

返回值:

类型说明
By返回By对象自身。

示例:

let by = BY.type('button') //使用静态构造器BY创建by对象,指定目标控件的控件类型属性。

clickable

clickable(b?: bool): By

指定目标控件的可点击状态属性,返回By对象自身。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
bbool指定控件可点击状态,默认为true。

返回值:

类型说明
By返回By对象自身。

示例:

let by = BY.clickable(true) //使用静态构造器BY创建by对象,指定目标控件的可点击状态属性。

longClickable9+

longClickable(b?: bool): By

指定目标控件的可长按点击状态属性,返回By对象自身。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
bbool指定控件可长按点击状态,默认为true。

返回值:

类型说明
By返回By对象自身。

示例:

let by = BY.longClickable(true) //使用静态构造器BY创建by对象,指定目标控件的可长按点击状态属性。

scrollable

scrollable(b?: bool): By

指定目标控件的可滑动状态属性,返回By对象自身。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
bbool控件可滑动状态,默认为true。

返回值:

类型说明
By返回By对象自身。

示例:

let by = BY.scrollable(true) //使用静态构造器BY创建by对象,指定目标控件的可滑动状态属性。

enabled

enabled(b?: bool): By

指定目标控件的使能状态属性,返回By对象自身。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
bbool指定控件使能状态,默认为true。

返回值:

类型说明
By返回By对象自身。

示例:

let by = BY.enabled(true) //使用静态构造器BY创建by对象,指定目标控件的使能状态属性。

focused

focused(b?: bool): By

指定目标控件的获焦状态属性,返回By对象自身。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
bbool控件获焦状态,默认为true。

返回值:

类型说明
By返回By对象自身。

示例:

let by = BY.focused(true) //使用静态构造器BY创建by对象,指定目标控件的获焦状态属性。

selected

selected(b?: bool): By

指定目标控件的被选中状态属性,返回By对象自身。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
bbool指定控件被选中状态,默认为true。

返回值:

类型说明
By返回By对象自身。

示例:

let by = BY.selected(true) //使用静态构造器BY创建by对象,指定目标控件的被选中状态属性。

checked9+

checked(b?: bool): By

指定目标控件的被勾选状态属性,返回By对象自身。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
bbool指定控件被勾选状态,默认为false。

返回值:

类型说明
By返回By对象自身

示例:

let by = BY.checked(true) //使用静态构造器BY创建by对象,指定目标控件的被勾选状态属性

checkable9+

checkable(b?: bool): By

指定目标控件能否被勾选状态属性,返回By对象自身。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
bbool指定控件能否被勾选状态,默认为false。

返回值:

类型说明
By返回By对象自身。

示例:

let by = BY.checkable(true) //使用静态构造器BY创建by对象,指定目标控件的能否被勾选状态属性。

isBefore

isBefore(by: By): By

指定目标控件位于给出的特征属性控件之前,返回By对象自身。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
byBy特征控件的属性。

返回值:

类型说明
By返回By对象自身。

示例:

let by = BY.isBefore(BY.text('123')) //使用静态构造器BY创建by对象,指定目标控件位于给出的特征属性控件之前。

isAfter

isAfter(by: By): By

指定目标控件位于给出的特征属性控件之后,返回By对象自身。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
byBy特征控件的属性。

返回值:

类型说明
By返回By对象自身。

示例:

let by = BY.isAfter(BY.text('123')) //使用静态构造器BY创建by对象,指定目标控件位于给出的特征属性控件之后。

UiComponent

UiTest中,UiComponent类代表了UI界面上的一个控件,提供控件属性获取,控件点击,滑动查找,文本注入等API。 该类提供的所有方法都使用Promise方式作为异步方法,需使用await调用。

Rect9+

控件的边框信息。

名称参数类型可读可写描述
leftXnumber控件边框的左上角的X坐标。
topYnumber控件边框的左上角的Y坐标。
rightXnumber控件边框的右下角的X坐标。
bottomYnumber控件边框的右下角的Y坐标。

click

click(): Promise

控件对象进行点击操作。

系统能力:SystemCapability.Test.UiTest

示例:

async function demo() {let driver = UiDriver.create()let button = await driver.findComponent(BY.type('button'))await button.click()
}

doubleClick

doubleClick(): Promise

控件对象进行双击操作。

系统能力:SystemCapability.Test.UiTest

示例:

async function demo() {let driver = UiDriver.create()let button = await driver.findComponent(BY.type('button'))await button.doubleClick()
}

longClick

longClick(): Promise

控件对象进行长按操作。

系统能力:SystemCapability.Test.UiTest

示例:

async function demo() {let driver = UiDriver.create()let button = await driver.findComponent(BY.type('button'))await button.longClick()
}

getId

getId(): Promise

获取控件对象的id值。

系统能力:SystemCapability.Test.UiTest

返回值:

类型说明
Promise以Promise形式返回的控件的id值。

示例:

async function demo() {let driver = UiDriver.create()let button = await driver.findComponent(BY.type('button'))let num = await button.getId()
}

getKey

getKey(): Promise

获取控件对象的key值。

系统能力:SystemCapability.Test.UiTest

返回值:

类型说明
Promise以Promise形式返回控件的key值。

示例:

async function demo() {let driver = UiDriver.create()let button = await driver.findComponent(BY.type('button'))let str_key = await button.getKey()
}

getText

getText(): Promise

获取控件对象的文本信息。

系统能力:SystemCapability.Test.UiTest

返回值:

类型说明
Promise以Promise形式返回控件的文本信息。

示例:

async function demo() {let driver = UiDriver.create()let button = await driver.findComponent(BY.type('button'))let text = await button.getText()
}

getType

getType(): Promise

获取控件对象的控件类型。

系统能力:SystemCapability.Test.UiTest

返回值:

类型说明
Promise以Promise形式返回控件的类型。

示例:

async function demo() {let driver = UiDriver.create()let button = await driver.findComponent(BY.type('button'))let type = await button.getType()
}

getBounds9+

getBounds(): Promise

获取控件对象的边框信息。

系统能力:SystemCapability.Test.UiTest

返回值:

类型说明
Promise 以Promise形式返回控件对象的边框信息。

示例:

async function demo() {let driver = UiDriver.create()let button = await driver.findComponent(BY.type('button'))let rect = await button.getBounds()
}

isClickable

isClickable(): Promise

获取控件对象可点击状态。

系统能力:SystemCapability.Test.UiTest

返回值:

类型说明
Promise以Promise形式返回控件对象可点击状态。

示例:

async function demo() {let driver = UiDriver.create()let button = await driver.findComponent(BY.type('button'))if(await button.isClickable()) {console.info('This button can be Clicked')}else{console.info('This button can not be Clicked')}
}

isLongClickable9+

isLongClickable(): Promise

获取控件对象可长按点击状态。

系统能力:SystemCapability.Test.UiTest

返回值:

类型说明
Promise以Promise形式返回控件对象能否长按点击状态。

示例:

async function demo() {let driver = UiDriver.create()let button = await driver.findComponent(BY.type('button'))if(await button.isLongClickable()) {console.info('This button can longClick')}else{console.info('This button can not longClick')}
}

isChecked9+

isChecked(): Promise

获取控件对象被勾选状态。

系统能力:SystemCapability.Test.UiTest

返回值:

类型说明
Promise以Promise形式返回控件对象被勾选状态。

示例:

async function demo() {let driver = UiDriver.create()let checkBox = await driver.findComponent(BY.type('Checkbox'))if(await checkBox.isChecked) {console.info('This checkBox is checked')}else{console.info('This checkBox is not checked')}
}

isCheckable9+

isCheckable(): Promise

获取控件对象能否被勾选的属性。

系统能力:SystemCapability.Test.UiTest

返回值:

类型说明
Promise以Promise形式返回控件对象能否被勾选的属性。

示例:

async function demo() {let driver = UiDriver.create()let checkBox = await driver.findComponent(BY.type('Checkbox'))if(await checkBox.isCheckable) {console.info('This checkBox is checkable')}else{console.info('This checkBox is not checkable')}
}

isScrollable

isScrollable(): Promise

获取控件对象可滑动状态。

系统能力:SystemCapability.Test.UiTest

返回值:

类型说明
Promise以Promise形式返回控件对象可滑动状态。

示例:

async function demo() {let driver = UiDriver.create()let scrollBar = await driver.findComponent(BY.scrollable(true))if(await scrollBar.isScrollable()) {console.info('This scrollBar can be operated')}else{console.info('This scrollBar can not be operated')}
}

isEnabled

isEnabled(): Promise

获取控件使能状态。

系统能力:SystemCapability.Test.UiTest

返回值:

类型说明
Promise以Promise形式返回控件使能状态。

示例:

async function demo() {let driver = UiDriver.create()let button = await driver.findComponent(BY.type('button'))if(await button.isEnabled()) {console.info('This button can be operated')}else{console.info('This button can not be operated')}
}

isFocused

isFocused(): Promise

判断控件对象是否获焦。

系统能力:SystemCapability.Test.UiTest

返回值:

类型说明
Promise以Promise形式返回控件对象是否获焦。

示例:

async function demo() {let driver = UiDriver.create()let button = await driver.findComponent(BY.type('button'))if(await button.isFocused()) {console.info('This button is focused')}else{console.info('This button is not focused')}
}

isSelected

isSelected(): Promise

获取控件对象被选中状态。

系统能力:SystemCapability.Test.UiTest

返回值:

类型说明
Promise控件对象被选中的状态

示例:

async function demo() {let driver = UiDriver.create()let button = await driver.findComponent(BY.type('button'))if(await button.isSelected()) {console.info('This button is selected')}else{console.info('This button is not selected')}
}

inputText

inputText(text: string): Promise

向控件中输入文本(适用于文本框控件)。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
textstring输入的文本信息。

示例:

async function demo() {let driver = UiDriver.create()let text = await driver.findComponent(BY.text('hello world'))await text.inputText('123')
}

clearText9+

clearText(): Promise

清除控件的文本信息(适用于文本框控件)。

系统能力:SystemCapability.Test.UiTest

示例:

async function demo() {let driver = UiDriver.create()let text = await driver.findComponent(BY.text('hello world'))await text.clearText()
}

scrollSearch

scrollSearch(by: By): Promise

在控件上滑动查找目标控件(适用于List等支持滑动的控件)。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
byBy目标控件的属性要求。

返回值:

类型说明
Promise以Promise形式返回找到的目标控件对象。

示例:

async function demo() {let driver = UiDriver.create()let scrollBar = await driver.findComponent(BY.type('Scroll'))let button = await scrollBar.scrollSearch(BY.text('next page'))
}

scrollToTop9+

scrollToTop(): Promise

在控件上滑动到顶部(适用于List等支持滑动的控件)。

系统能力:SystemCapability.Test.UiTest

示例:

async function demo() {let driver = UiDriver.create()let scrollBar = await driver.findComponent(BY.type('Scroll'))await scrollBar.scrollToTop()
}

scrollToBottom9+

scrollToBottom(): Promise

在控件上滑动到底部(适用于List等支持滑动的控件)。

系统能力:SystemCapability.Test.UiTest

示例:

async function demo() {let driver = UiDriver.create()let scrollBar = await driver.findComponent(BY.type('Scroll'))await scrollBar.scrollToBottom()
}

dragTo9+

dragTo(target: UiComponent): Promise

将控件拖拽至目标控件处。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
targetUiComponent目标控件。

示例:

async function demo() {let driver = UiDriver.create()let button = await driver.findComponent(BY.type('button'))let text = await driver.findComponent(BY.text('hello world'))await button.dragTo(text)}

UiDriver

UiDriver类为uitest测试框架的总入口,提供控件匹配/查找,按键注入,坐标点击/滑动,截图等API。 该类提供的方法除UiDriver.create()以外的所有方法都使用Promise方式作为异步方法,需使用await调用。

create

static create(): UiDriver

静态方法,构造一个UiDriver对象,并返回该对象。

系统能力:SystemCapability.Test.UiTest

返回值:

类型说明
UiDrive返回构造的UiDriver对象。

示例:

async function demo() {let driver = UiDriver.create()
}

delayMs

delayMs(duration: number): Promise

UiDriver对象在给定的时间内延时。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
durationnumber给定的时间。

示例:

async function demo() {let driver = UiDriver.create()await driver.delayMs(1000)
}

findComponent

findComponent(by: By): Promise

在UiDriver对象中,根据给出的目标控件属性要求查找目标控件。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
byBy目标控件的属性要求。

返回值:

类型说明
Promise以Promise形式返回找到的控件对象。

示例:

async function demo() {let driver = UiDriver.create()let button = await driver.findComponent(BY.text('next page'))
}

findComponents

findComponents(by: By): Promise<Array>

在UiDriver对象中,根据给出的目标控件属性要求查找出所有匹配控件,以列表保存。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
byBy目标控件的属性要求。

返回值:

类型说明
Promise<Array>以Promise形式返回找到的控件对象的列表。

示例:

async function demo() {let driver = UiDriver.create()let buttonList = await driver.findComponents(BY.text('next page'))
}

waitForComponent9+

waitForComponent(by: By, time: number): Promise

在UiDriver对象中,在用户给定的时间内,持续查找满足控件属性要求的目标控件。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
byBy目标控件的属性要求。
timenumber查找目标控件的持续时间。单位ms。

返回值:

类型说明
Promise以Promise形式返回找到的控件对象。

示例:

async function demo() {let driver = UiDriver.create()let button = await driver.waitForComponent(BY.text('next page'),500)
}

assertComponentExist

assertComponentExist(by: By): Promise

断言API,用于断言当前界面存在满足给出的目标控件属性的控件; 如果控件不存在,该API将抛出JS异常,使当前测试用例失败。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
byBy目标控件的属性要求。

示例:

async function demo() {let driver = UiDriver.create()await driver.assertComponentExist(BY.text('next page'))
}

pressBack

pressBack(): Promise

UiDriver对象进行点击BACK键的操作。

系统能力:SystemCapability.Test.UiTest

示例:

async function demo() {let driver = UiDriver.create()await driver.pressBack()
}

triggerKey

triggerKey(keyCode: number): Promise

UiDriver对象采取如下操作:通过key值找到对应键并点击。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
keyCodenumber指定的key值。

示例:

async function demo() {let driver = UiDriver.create()await driver.triggerKey(123)
}

click

click(x: number, y: number): Promise

UiDriver对象采取如下操作:在目标坐标点单击。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
xnumber以number的形式传入目标点的横坐标信息。
ynumber以number的形式传入目标点的纵坐标信息。

示例:

async function demo() {let driver = UiDriver.create()await driver.click(100,100)
}

doubleClick

doubleClick(x: number, y: number): Promise

UiDriver对象采取如下操作:在目标坐标点双击。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
xnumber以number的形式传入目标点的横坐标信息。
ynumber以number的形式传入目标点的纵坐标信息。

示例:

async function demo() {let driver = UiDriver.create()await driver.doubleClick(100,100)
}

longClick

longClick(x: number, y: number): Promise

UiDriver对象采取如下操作:在目标坐标点长按下鼠标左键。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
xnumber以number的形式传入目标点的横坐标信息。
ynumber以number的形式传入目标点的纵坐标信息。

示例:

async function demo() {let driver = UiDriver.create()await driver.longClick(100,100)
}

swipe

swipe(startx: number, starty: number, endx: number, endy: number): Promise

UiDriver对象采取如下操作:从给出的起始坐标点滑向给出的目的坐标点。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
startxnumber以number的形式传入起始点的横坐标信息。
startynumber以number的形式传入起始点的纵坐标信息。
endxnumber以number的形式传入目的点的横坐标信息。
endynumber以number的形式传入目的点的纵坐标信息。

示例:

async function demo() {let driver = UiDriver.create()await driver.swipe(100,100,200,200)
}

drag9+

drag(startx: number, starty: number, endx: number, endy: number): Promise

UiDriver对象采取如下操作:从给出的起始坐标点拖拽至给出的目的坐标点。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
startxnumber以number的形式传入起始点的横坐标信息。
startynumber以number的形式传入起始点的纵坐标信息。
endxnumber以number的形式传入目的点的横坐标信息。
endynumber以number的形式传入目的点的纵坐标信息。

示例:

async function demo() {let driver = UiDriver.create()await driver.drag(100,100,200,200)
}

screenCap

screenCap(savePath: string): Promise

UiDriver对象采取如下操作:捕获当前屏幕,并保存为PNG格式的图片至给出的保存路径中。

系统能力:SystemCapability.Test.UiTest

参数:

参数名类型必填说明
savePathstring文件保存路径。

返回值:

在这里插入图片描述

类型说明 HarmonyOS与OpenHarmony鸿蒙文档籽料:mau123789是v直接拿
Promise截图操作是否成功完成。成功完成为true。

示例:

async function demo() {let driver = UiDriver.create()await driver.screenCap('/local/tmp/')
}

MatchPattern

控件属性支持的匹配模式。

系统能力:以下各项对应的系统能力均为SystemCapability.Test.UiTest

名称说明
EQUALS0等于给定值。
CONTAINS1包含给定值。
STARTS_WITH2从给定值开始。
ENDS_WITH3以给定值结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实验四:图像的锐化处理

目录 一、实验目的 二、实验原理 1. 拉普拉斯算子 2. Sobel算子 3. 模板大小对滤波的影响 三、实验内容 四、源程序和结果 (1) 主程序(matlab) (2) 函数GrayscaleFilter (3) 函数MatrixAbs 五、结果分析 1. 拉普拉斯滤波 2. Sobel滤波 3. 不同大小模板的滤波…

单点登陆思路及流程

单点登录&#xff08;Single Sign-On&#xff0c;简称SSO&#xff09;是一种流行的身份验证和授权机制&#xff0c;允许用户通过一次登录获得对多个应用程序或系统的访问权限。实现单点登录可以提高用户体验、简化用户管理和减少密码重复输入等问题。下面是一种常见的单点登录实…

昇思25天学习打卡营第7天 | 基于MindSpore的GPT2文本摘要

本次打卡基于gpt2的文本摘要 数据加载及预处理 from mindnlp.utils import http_get# download dataset url https://download.mindspore.cn/toolkits/mindnlp/dataset/text_generation/nlpcc2017/train_with_summ.txt path http_get(url, ./)from mindspore.dataset impor…

以太坊(以太坊solidity合约)

以太坊&#xff08;以太坊solidity合约&#xff09; 1&#xff0c;以太坊2&#xff0c;开发名词解释&#xff08;1&#xff09;钱包&#xff08;2&#xff09;Solidity&#xff08;3&#xff09;Ether&#xff08;以太币&#xff09;&#xff08;4&#xff09;Truffle&#xff…

Redis 7.x 系列【23】哨兵模式

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 工作原理2.1 监控2.2 标记下线2.3 哨兵领袖2.4 新的主节点2.5 通知更新 3. …

请求响应(后端必备)

一、请求 1.简单参数 原始方式&#xff1a; 在原始的web程序中&#xff0c;获取请求参数&#xff0c;需要通过HttpServletRequest对象手动获取 RequestMapping("/simpleParam")public String simpleParam(HttpServletRequest request){String name request.getP…

什么叫价内期权?直接带你了解期权价内期权怎么使用?!

今天带你了解什么叫价内期权&#xff1f;直接带你了解期权价内期权怎么使用&#xff1f;&#xff01;价内期权是具有内在价值的期权。期权持有人行权时&#xff0c;对看涨期权而言&#xff0c;行权价格低于标的证券结算价格&#xff1b;对看跌期权而言&#xff0c;标的证券结算…

js 请求blob:https:// 图片

方式1 def get_file_content_chrome(driver, uri):result driver.execute_async_script("""var uri arguments[0];var callback arguments[1];var toBase64 function(buffer){for(var r,nnew Uint8Array(buffer),tn.length,anew Uint8Array(4*Math.ceil(t/…

前端Vue组件化实践:自定义加载组件的探索与应用

在前端开发领域&#xff0c;随着业务逻辑复杂度的提升和系统规模的不断扩大&#xff0c;传统的开发方式逐渐暴露出效率低下、维护困难等问题。为了解决这些挑战&#xff0c;组件化开发作为一种高效、灵活的开发模式&#xff0c;受到了越来越多开发者的青睐。本文将结合实践&…

Java基础及进阶

JAVA特性 基础语法 一、Java程序的命令行工具 二、final、finally、finalize 三、继承 class 父类 { //代码 }class 子类 extends 父类 { //代码 }四、Vector、ArrayList、LinkedList 五、原始数据类型和包装类 六、接口和抽象类 JAVA进阶 Java引用队列 Object counter ne…

PostgreSQL行级安全策略探究

前言 最近和朋友讨论oracle行级安全策略(VPD)时&#xff0c;查看了下官方文档&#xff0c;看起来VPD的原理是针对应用了Oracle行级安全策略的表、视图或同义词发出的 SQL 语句动态添加where子句。通俗理解就是将行级安全策略动态添加为where 条件。那么PG中的行级安全策略是怎…

搭建基于 ChatGPT 的问答系统

搭建基于 ChatGPT 的问答系统 &#x1f4e3;1.简介&#x1f4e3;2.语言模型&#xff0c;提问范式和 token✨2.1语言模型✨2.2Tokens✨2.3Helper function辅助函数&#xff08;提问范式&#xff09; &#x1f4e3;3.评估输入-分类&#x1f4e3;4.检查输入-审核✨4.1审核4.1.1 我…

使用UDP通信接收与发送Mavlink2.0协议心跳包完整示例

1.克隆mavlink源码 https://github.com/mavlink/mavlink.git 2.进入mavlink目录,安装依赖 python3 -m pip install -r pymavlink/requirements.txt 3.生成Mavlink的C头文件 mavlink % python3 -m pymavlink.tools.mavgen --lang=C --wire-protocol=2.0 --output=generated…

1-5岁幼儿胼胝体的表面形态测量

摘要 胼胝体(CC)是大脑中的一个大型白质纤维束&#xff0c;它参与各种认知、感觉和运动过程。尽管CC与多种发育和精神疾病有关&#xff0c;但关于这一结构的正常发育(特别是在幼儿阶段)还有很多待解开的谜团。虽然早期文献中报道了性别二态性&#xff0c;但这些研究的观察结果…

【Linux网络】select{理解认识select/select与多线程多进程/认识select函数/使用select开发并发echo服务器}

文章目录 0.理解/认识回顾回调函数select/pollread与直接使用 read 的效率差异 1.认识selectselect/多线程&#xff08;Multi-threading&#xff09;/多进程&#xff08;Multi-processing&#xff09;select函数socket就绪条件select的特点总结 2.select下echo服务器封装套接字…

C++ 类和对象 赋值运算符重载

前言&#xff1a; 在上文我们知道数据类型分为自定义类型和内置类型&#xff0c;当我想用内置类型比较大小是非常容易的但是在C中成员变量都是在类(自定义类型)里面的&#xff0c;那我想给类比较大小那该怎么办呢&#xff1f;这时候运算符重载就出现了 一 运算符重载概念&…

安全防御:防火墙基本模块

目录 一、接口 1.1 物理接口 1.2 虚拟接口 二、区域 三、模式 3.1 路由模式 3.2 透明模式 3.3 旁路检测模式 3.4 混合模式 四、安全策略 五、防火墙的状态检测和会话表技术 一、接口 1.1 物理接口 三层口 --- 可以配置IP地址的接口 二层口&#xff1a; 普通二层…

Java面试题:分库分表

分库分表 当数据量非常大时,就需要通过分库分表的方式进行压力分摊,避免数据库访问压力过大 分库分表的前提: 业务数据达到一定量级:单表数据量达到1000w或20g 优化解决不了性能问题 分库分表策略 垂直拆分 垂直分库 以表为依据,根据业务将不同表拆分到不同库中 eg:根…

车载终端_RTK定位|4路摄像头|驾驶辅助系统ADAS定制方案

现代车辆管理行业的发展趋势逐渐向智能化和高效化方向发展&#xff0c;车载终端成为关键的工具之一。在这个背景下&#xff0c;一款特别为车队管理行业设计的车载终端应运而生。该车载终端采用8寸多点触控电容屏&#xff0c;搭载联发科四核处理器&#xff0c;主频2.0GHz&#x…