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

news2024/9/22 3:42:44

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.coloradmin.cn/o/1927509.html

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

相关文章

中电金信:成功的智慧运营转型,重点是把握“一个基本点和两大主线”

“运营”是银行不可或缺的基础职能&#xff0c;负责产品的服务交付过程和业务的落地处理&#xff0c;解决商业模式下“怎么做”的问题。纵观全球领先银行的运营转型历程&#xff0c;已从传统分散运营逐步转向集中运营、共享运营&#xff0c;乃至价值创造。从国内银行运营转型发…

微信小程序毕业设计-青少年科普教学系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

基于SpringBoot协同过滤算法商品推荐系统(源码+lw+部署文档+讲解等)

前言&#xff1a; 博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBo…

C++面试问题

C基础 什么是野指针&#xff1f; 指向未分配或已释放内存的指针。比如未初始化、delete后未指向空、保存了局部变量的地址 怎么解决野指针问题&#xff1f; 使用智能指针释放后置空指针初始化避免返回局部变量的地址 C空类会创造那些函数&#xff1f; 默认构造析构函数拷…

【qt】TCP客户端如何断开连接?

disconnectFromHost() 来关闭套接字,断开连接. 当我们关闭窗口时,也需要断开连接. 需要重写关闭事件 如果当前的套接字状态是连接上的,我们就可以来断开连接. 运行结果:

空安全编程的典范:Java 8中的安全应用指南

文章目录 一、Base64 编码解码1.1 基本的编码和解码1.2 URL 和文件名安全的编码解码器1.3 MIME Base64编码和解码 二、Optional类三、Nashorn JavaScript 一、Base64 编码解码 1.1 基本的编码和解码 Base64 编码&#xff1a; 使用 Base64.getEncoder().encodeToString(origin…

vue3 快速入门 (一) : 环境配置与搭建

1. 本文环境 Vue版本 : 3.4.29Node.js版本 : v20.15.0系统 : Windows11 64位IDE : VsCode 2. 安装Node.Js 首先&#xff0c;我们需要安装Node.Js。Node.js提供了运行 JavaScript 代码的环境。并且Node.js 带来了 npm&#xff0c;它是JavaScript世界的包管理工具。开发vue时&…

苹果手机相册图片怎么转换成jpg而不会降低质量

在苹果设备的世界里&#xff0c;随着 iOS 11 的推出&#xff0c;苹果引入了一种新的图像格式 - 高效图像编码&#xff08;High Efficiency Image Format, HEIF&#xff09;。当用户在 iPhone 或 iPad 上拍摄照片时&#xff0c;默认情况下&#xff0c;这些设备会保存图片为 HEIC…

软件测试——web单功能测试

工作职责&#xff1a; 1.负责产品系统测试&#xff0c;包括功能测试、性能测试、稳定性测试、用户场景测试、可靠性测试等。 2.负责测试相关文档的编写&#xff0c;包括测试计划、测试用例、测试报告等。 3.负责自动化测试框架、用例的维护。 岗位要求&#xff1a; 1.熟练…

达梦数据库系列—28. 主备集群高可用测试

目录 监视器关闭 监视器启动&#xff0c;Detach备库 主备正常&#xff0c;手动switchover 主库故障&#xff0c;自动switchover 主库故障&#xff0c;手动Takeover 主库故障&#xff0c;备库强制takeover 主库重启 备库故障 公网连接异常 主库私网异常 备库私网异常…

uniapp打包成Android时,使用uni.chooseLocation在App端显示的地址列表是空白?一直转圈的解决办法

问题描述&#xff1a; uniapp打包后的测试版app在ios里可以显示高德地图的定位列表&#xff0c;但是安卓手机却不显示定位列表&#xff0c;一直在转圈圈&#xff0c;怎么回事&#xff1f;之前的功能在正式版都能用&#xff0c;真机运行也能用&#xff0c;为什么测试版的安卓手…

【数智化案例展】某省会城市——轨道交通线网云平台建设

‍ 逸迅科技案例 本项目案例由逸迅科技投递并参与数据猿与上海大数据联盟联合推出的《2024中国数智化转型升级创新服务企业》榜单/奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 本项目将打造一个先进的线网指挥中心大数据平台&#xff0c;它将作为这座城市轨道…

Kafka基本原理|特性

Kafka是什么 Kafka是最初由Linkedin公司开发&#xff0c;是一个分布式、支持分区的&#xff08;partition&#xff09;、多副本的&#xff08;replica&#xff09;&#xff0c;基于zookeeper协调的分布式消息系统 它的最大的特性就是可以实时的处理大量数据以满足各种需求场景…

线程安全(五)volatile 修饰共享变量(JIT即时编译器、指令重排序)

目录 一、volatile 简介1.1 定义1.2 volatile 的两个特性二、特性1:保证线程间的可见性示例1:普通场景1)代码示例:2)执行结果:3)总结:示例2:被 JIT 即时编译器优化1)代码示例:2)执行结果:3)原因分析:4)什么是 JIT 即时编译器?4)解决方案一:5)解决方案二:三…

如何用STM32实现modbus-RTU?

Modbus RTU是一种广泛应用于工业自动化领域的通信协议,基于主从架构,通过串行通信进行数据传输。本文将详细介绍Modbus RTU协议的基本原理,并提供在STM32微控制器上实现Modbus RTU通信的完整代码示例。 1. Modbus RTU协议概述 Modbus RTU的定义和特点 Modbus RTU(Remote Te…

【数学建模与优化】:解析与实践

目录 数学建模概述 1. 什么是数学模型 2. 数学模型的分类 2.1 按应用领域分类 2.2 按建模方法分类 2.3 按是否考虑随机因素分类 2.4 按变量的连续性分类 2.5 按对对象内部规律了解程度分类 2.6 按变量的基本关系分类 2.7 按是否考虑时间变化分类 3. 数学规划及优化模…

无人机之机架类型篇

碳纤维机架 具有低密度、高强度和高刚度的特点&#xff0c;非常适合商业或工业级无人机的设计。碳纤维机架在飞行过程中具有良好的减振效果&#xff0c;使飞行更加稳定&#xff0c;但制作工艺复杂&#xff0c;成本较高。 工程塑料机架 以其轻便、耐冲击和易加工等特点受到一…

【轻松拿捏】HashMap-详解及底层实现原理?

目录 1. 基本结构 2. 哈希函数 3. 哈希冲突解决 4. 插入操作&#xff08;put&#xff09; 5. 查找操作&#xff08;get&#xff09; 6. 删除操作&#xff08;remove&#xff09; 7. 扩容&#xff08;resize&#xff09; 8.说一下 HashMap 的实现原理&#xff1f;&#…

前端:Vue学习-1

前端:Vue学习-1 1. 指令1. 指令修饰符2. v-bind对样式控制的增强3. v-model应用于其他表单元素 2. 计算属性3. watch侦听器&#xff08;监视器&#xff09; 1. 指令 就是带有v-前缀的特殊属性&#xff0c;不同属性对应不同的功能 v-html&#xff1a;动态设置页面的html标签内容…