Element

Element 模块提供了控制小程序页面元素的方法。

属性

element.tagName

标签名,小写。

  1. element.tagName: string

方法

element.$

在元素范围内获取元素。

  1. element.$(selector: string): Promise<Element>

参数说明

字段类型必填默认值说明
selectorstring-选择器

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. const page = await miniProgram.currentPage()
  3. let element = await page.$('.index-hd')
  4. element = await element.$('.index-desc')
  5. console.log(await element.text())
  6. })

element.$$

在元素范围内获取元素数组。

  1. element.$$(selector: string): Promise<Element[]>

参数说明

字段类型必填默认值说明
selectorstring-选择器

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. const page = await miniProgram.currentPage()
  3. const element = await page.$('.index-bd')
  4. const elements = await element.$$('.kind-list-text')
  5. console.log(await elements[0].text())
  6. })

element.size

获取元素大小。

  1. element.size(): Promise<Object>

返回值说明

字段类型说明
widthnumber元素宽度
heightnumber元素高度

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. const page = await miniProgram.currentPage()
  3. const element = await page.$('.index-bd')
  4. const { width, height } = await element.size()
  5. console.log(width, height)
  6. })

element.offset

获取元素绝对位置。

  1. element.offset(): Promise<Object>

返回值说明

字段类型说明
leftnumber左上角 x 坐标,单位:px
topnumber左上角 y 坐标,单位:px

坐标信息以页面左上角为原点。

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. const page = await miniProgram.currentPage()
  3. const element = await page.$('.index-bd')
  4. const { left top } = await element.offset()
  5. console.log(left, top)
  6. })

element.text

获取元素文本。

  1. element.text(): Promise<string>

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. const page = await miniProgram.currentPage()
  3. const element = await page.$('.index-desc')
  4. console.log(await element.text())
  5. })

element.attribute

获取元素属性。

  1. element.attribute(name: string): Promise<string>

参数说明

字段类型必填默认值说明
namestring-属性名

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. const page = await miniProgram.currentPage()
  3. const element = await page.$('.index-logo')
  4. console.log(await element.attribute('src')) // -> 'resources/kind/logo.png'
  5. })

element.wxml

获取元素 WXML。

  1. element.wxml(): Promise<string>

element.outerWxml

同 wxml,只是会获取到元素本身。

  1. element.outerWxml(): Promise<string>

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. const page = await miniProgram.currentPage()
  3. const element = await page.$('.index-desc')
  4. console.log(await element.wxml())
  5. console.log(await element.outerWxml())
  6. })

element.value

获取元素值。

  1. element.value(): Promise<string>

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. const page = await miniProgram.currentPage()
  3. const element = await page.$('.weui-input')
  4. console.log(await element.value())
  5. })

element.style

获取元素样式值。

  1. element.style(name: string): Promise<string>

参数说明

字段类型必填默认值说明
namestring-样式名

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. const page = await miniProgram.currentPage()
  3. const element = await page.$('.index-desc')
  4. console.log(await element.style('color')) // -> 'rgb(136, 136, 136)'
  5. })

element.tap

点击元素。

  1. element.tap(): Promise<void>

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. const page = await miniProgram.currentPage()
  3. const element = await page.$('.kind-list-item-hd')
  4. await element.tap()
  5. })

element.longpress

长按元素。

  1. element.longpress(): Promise<void>

element.touchstart

automator 0.8.0,基础库 2.9.1 开始支持。

手指开始触摸元素。

  1. element.touchstart(options: Object): Promise<void>

options 字段定义如下:

字段类型必填默认值说明
touchesarray<Touch>-触摸事件,当前停留在屏幕中的触摸点信息的数组
changedTouchesarray<Touch>-触摸事件,当前变化的触摸点信息的数组

element.touchmove

automator 0.8.0,基础库 2.9.1 开始支持。

手指触摸元素后移动。

  1. element.touchmove(options: Object): Promise<void>

options 字段同 touchstart。

element.touchend

automator 0.8.0,基础库 2.9.1 开始支持。

手指结束触摸元素。

  1. element.touchend(options: Object): Promise<void>

options 字段同 touchstart。

  1. automator.launch().then(async miniProgram => {
  2. const page = await miniProgram.currentPage()
  3. const element = await page.$('.touch')
  4. await element.touchstart({
  5. touches: [
  6. {
  7. identifier: 1,
  8. pageX: 500,
  9. pageY: 500
  10. }
  11. ],
  12. changedTouches: [
  13. {
  14. identifier: 1,
  15. pageX: 500,
  16. pageY: 500
  17. }
  18. ]
  19. })
  20. await element.touchend({
  21. touches: [],
  22. changedTouches: [
  23. {
  24. identifier: 1,
  25. pageX: 500,
  26. pageY: 500
  27. }
  28. ]
  29. })
  30. })

element.callMethod

automator 0.6.0,基础库 2.9.0 开始支持。

调用自定义组件实例指定方法。

  1. element.callMethod(method: string, ...args: any[]): Promise<any>

参数说明

字段类型必填默认值说明
methodstring-需要调用的方法名
…argsarray<any>-方法参数

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. const page = await miniProgram.currentPage()
  3. const element = await page.$('set-tab-bar')
  4. await element.callMethod('navigateBack')
  5. })

element.data

automator 0.6.0,基础库 2.9.0 开始支持。

获取自定义组件实例渲染数据。

  1. element.data(path?: string): Promise<Object>

参数说明

字段类型必填默认值说明
pathstring-数据路径

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. const page = await miniProgram.currentPage()
  3. const element = await page.$('set-tab-bar')
  4. console.log(await element.data('hasSetTabBarBadge'))
  5. })

element.setData

automator 0.6.0,基础库 2.9.0 开始支持。

设置自定义组件实例渲染数据。

  1. element.setData(data: Object): Promise<void>

参数说明

字段类型必填默认值说明
dataObject-要改变的数据

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. const page = await miniProgram.currentPage()
  3. const element = await page.$('set-tab-bar')
  4. await page.setData({
  5. hasSetTabBarBadge: true
  6. })
  7. })

element.trigger

触发元素事件。

  1. element.trigger(type: string, detail?: Object): Promise<void>

参数说明

字段类型必填默认值说明
typestring-触发事件类型
detailObject-触发事件时传递的 detail 值

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. const page = await miniProgram.currentPage()
  3. const element = await page.$('picker')
  4. await element.trigger('change', { value: 1 })
  5. })

该方法无法改变组件状态,仅触发响应方法,也无法触发用户操作事件,即 tap,longpress 等事件,请使用对应的其它方法调用。