Element
Element 模块提供了控制小程序页面元素的方法。
属性
element.tagName
标签名,小写。
element.tagName: string
方法
element.$
在元素范围内获取元素。
element.$(selector: string): Promise<Element>
参数说明
字段 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
selector | string | 是 | - | 选择器 |
示例代码:
automator.launch().then(async miniProgram => {
const page = await miniProgram.currentPage()
let element = await page.$('.index-hd')
element = await element.$('.index-desc')
console.log(await element.text())
})
element.$$
在元素范围内获取元素数组。
element.$$(selector: string): Promise<Element[]>
参数说明
字段 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
selector | string | 是 | - | 选择器 |
示例代码:
automator.launch().then(async miniProgram => {
const page = await miniProgram.currentPage()
const element = await page.$('.index-bd')
const elements = await element.$$('.kind-list-text')
console.log(await elements[0].text())
})
element.size
获取元素大小。
element.size(): Promise<Object>
返回值说明
字段 | 类型 | 说明 |
---|---|---|
width | number | 元素宽度 |
height | number | 元素高度 |
示例代码:
automator.launch().then(async miniProgram => {
const page = await miniProgram.currentPage()
const element = await page.$('.index-bd')
const { width, height } = await element.size()
console.log(width, height)
})
element.offset
获取元素绝对位置。
element.offset(): Promise<Object>
返回值说明
字段 | 类型 | 说明 |
---|---|---|
left | number | 左上角 x 坐标,单位:px |
top | number | 左上角 y 坐标,单位:px |
坐标信息以页面左上角为原点。
示例代码:
automator.launch().then(async miniProgram => {
const page = await miniProgram.currentPage()
const element = await page.$('.index-bd')
const { left top } = await element.offset()
console.log(left, top)
})
element.text
获取元素文本。
element.text(): Promise<string>
示例代码:
automator.launch().then(async miniProgram => {
const page = await miniProgram.currentPage()
const element = await page.$('.index-desc')
console.log(await element.text())
})
element.attribute
获取元素属性。
element.attribute(name: string): Promise<string>
参数说明
字段 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
name | string | 是 | - | 属性名 |
示例代码:
automator.launch().then(async miniProgram => {
const page = await miniProgram.currentPage()
const element = await page.$('.index-logo')
console.log(await element.attribute('src')) // -> 'resources/kind/logo.png'
})
element.wxml
获取元素 WXML。
element.wxml(): Promise<string>
element.outerWxml
同 wxml,只是会获取到元素本身。
element.outerWxml(): Promise<string>
示例代码:
automator.launch().then(async miniProgram => {
const page = await miniProgram.currentPage()
const element = await page.$('.index-desc')
console.log(await element.wxml())
console.log(await element.outerWxml())
})
element.value
获取元素值。
element.value(): Promise<string>
示例代码:
automator.launch().then(async miniProgram => {
const page = await miniProgram.currentPage()
const element = await page.$('.weui-input')
console.log(await element.value())
})
element.style
获取元素样式值。
element.style(name: string): Promise<string>
参数说明
字段 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
name | string | 是 | - | 样式名 |
示例代码:
automator.launch().then(async miniProgram => {
const page = await miniProgram.currentPage()
const element = await page.$('.index-desc')
console.log(await element.style('color')) // -> 'rgb(136, 136, 136)'
})
element.tap
点击元素。
element.tap(): Promise<void>
示例代码:
automator.launch().then(async miniProgram => {
const page = await miniProgram.currentPage()
const element = await page.$('.kind-list-item-hd')
await element.tap()
})
element.longpress
长按元素。
element.longpress(): Promise<void>
element.touchstart
automator 0.8.0,基础库 2.9.1 开始支持。
手指开始触摸元素。
element.touchstart(options: Object): Promise<void>
options 字段定义如下:
字段 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
touches | array<Touch> | 是 | - | 触摸事件,当前停留在屏幕中的触摸点信息的数组 |
changedTouches | array<Touch> | 是 | - | 触摸事件,当前变化的触摸点信息的数组 |
element.touchmove
automator 0.8.0,基础库 2.9.1 开始支持。
手指触摸元素后移动。
element.touchmove(options: Object): Promise<void>
options 字段同 touchstart。
element.touchend
automator 0.8.0,基础库 2.9.1 开始支持。
手指结束触摸元素。
element.touchend(options: Object): Promise<void>
options 字段同 touchstart。
automator.launch().then(async miniProgram => {
const page = await miniProgram.currentPage()
const element = await page.$('.touch')
await element.touchstart({
touches: [
{
identifier: 1,
pageX: 500,
pageY: 500
}
],
changedTouches: [
{
identifier: 1,
pageX: 500,
pageY: 500
}
]
})
await element.touchend({
touches: [],
changedTouches: [
{
identifier: 1,
pageX: 500,
pageY: 500
}
]
})
})
element.callMethod
automator 0.6.0,基础库 2.9.0 开始支持。
调用自定义组件实例指定方法。
element.callMethod(method: string, ...args: any[]): Promise<any>
参数说明
字段 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
method | string | 是 | - | 需要调用的方法名 |
…args | array<any> | 否 | - | 方法参数 |
示例代码:
automator.launch().then(async miniProgram => {
const page = await miniProgram.currentPage()
const element = await page.$('set-tab-bar')
await element.callMethod('navigateBack')
})
element.data
automator 0.6.0,基础库 2.9.0 开始支持。
获取自定义组件实例渲染数据。
element.data(path?: string): Promise<Object>
参数说明
字段 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
path | string | 否 | - | 数据路径 |
示例代码:
automator.launch().then(async miniProgram => {
const page = await miniProgram.currentPage()
const element = await page.$('set-tab-bar')
console.log(await element.data('hasSetTabBarBadge'))
})
element.setData
automator 0.6.0,基础库 2.9.0 开始支持。
设置自定义组件实例渲染数据。
element.setData(data: Object): Promise<void>
参数说明
字段 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
data | Object | 是 | - | 要改变的数据 |
示例代码:
automator.launch().then(async miniProgram => {
const page = await miniProgram.currentPage()
const element = await page.$('set-tab-bar')
await page.setData({
hasSetTabBarBadge: true
})
})
element.trigger
触发元素事件。
element.trigger(type: string, detail?: Object): Promise<void>
参数说明
字段 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
type | string | 是 | - | 触发事件类型 |
detail | Object | 否 | - | 触发事件时传递的 detail 值 |
示例代码:
automator.launch().then(async miniProgram => {
const page = await miniProgram.currentPage()
const element = await page.$('picker')
await element.trigger('change', { value: 1 })
})
该方法无法改变组件状态,仅触发响应方法,也无法触发用户操作事件,即 tap,longpress 等事件,请使用对应的其它方法调用。