用的自动化工具是最新的0.9.1, sdk是2.10.0
wxml:
<view class="filter-item border-line">
<view class="title font-weight-medium padding-top-60">租金费用</view>
<view
id="service-fee"
bindtap="onTapSetChecked"
class="with-icon-container mar-bottom"
data-filter-key="noServiceFee"
>
<view class="tip">
<text class="title">无服务费</text>
</view>
<ImageIcon
iclass="icon-container"
name="{{noServiceFee ? 'i_orange-checked':'i_unchecked'}}"
/>
</view>
<view
id="pay-monthly"
bindtap="onTapSetChecked"
class="with-icon-container mar-bottom"
data-filter-key="monthlyPay"
>
<view class="tip">
<text class="title">月付无押金</text>
</view>
<ImageIcon
iclass="icon-container"
name="{{monthlyPay ? 'i_orange-checked':'i_unchecked'}}"
/>
</view>
<view
id="deposit-one-pay-one"
bindtap="onTapSetChecked"
class="with-icon-container mar-bottom"
data-filter-key="onePayOneDeposit"
>
<view class="tip">
<text class="title">押一付一</text>
</view>
<ImageIcon
iclass="icon-container"
name="{{onePayOneDeposit ? 'i_orange-checked':'i_unchecked'}}"
/>
</view>
<view
id="no-realtor-fee"
bindtap="onTapSetChecked"
class="with-icon-container mar-bottom"
data-filter-key="noRealtorFee"
>
<view class="tip">
<text class="title">无中介费</text>
</view>
<ImageIcon
iclass="icon-container"
name="{{noRealtorFee ? 'i_orange-checked':'i_unchecked'}}"
/>
</view>
</view>
js:
onTapSetChecked(e) {
console.log(e.currentTarget.id); // 当点击事件触发时打印该元素的id
}
自动化脚本:
const element = await page.$("#service-fee"); // 用id选择上面wxml里第一个可点击的元素
await element.tap("#service-fee"); // 这里我把自动化工具改了一下:
/**
miniprogram-automator, Element.js:
将方法
async tap() {
await this.send("Element.tap")
}
改成了
async tap(selector) {
console.log(`**********${selector}**********`)
await this.send("Element.tap")
}
这样我可以看到我是否正确调用了自动化工具
*/
结果:
在命令行里打印了**********#service-fee**********, 但开发者工具里没有打印任何东西。
所以得出结论:自动化工具的tap方法被调用,但小程序里面的点击事件没有触发
奇怪的是如果我在自动化脚本里连点两次该元素,点击事件就会触发,但是只触发一次
我把脚本里一段模拟touch的代码删了就好了。。。