有时候用自动化工具点击元素不生效?
发布于 6 年前 作者 nkang 4419 次浏览 来自 问答

用的自动化工具是最新的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方法被调用,但小程序里面的点击事件没有触发

奇怪的是如果我在自动化脚本里连点两次该元素,点击事件就会触发,但是只触发一次

 

1 回复

我把脚本里一段模拟touch的代码删了就好了。。。

回到顶部