dapp脚本编写
常用最简dapp脚本demo:
FishxScript = {
name: "脚本名",
desc: "脚本简介",
category: "脚本分组",
type: "dapp",
url: "脚本执行初始地址",
mockBlock: "0x000000000000000000000000000000000000000000000000000000000000000",
mockTx: "0x000000000000000000000000000000000000000000000000000000000000000",
inputs: { 金额: { type: "number", range: true } },
logic: async (context) => {
must(changeAccount);
console.log('hello word');
},
};
常用方法:
click
点击。
例如,点击左下角:
await click("left,bottom");
例如,点击对应selector的元素:
await click("#swap-box button.swap-confirm");
focus
选中。
例如,输入框前先选中代替清空
await focus("#swap-input div.row input");
typeIn
输入。
例如,输入输入框中用户输入的金额;
await typeIn(getInput("金额",context));
waitFor
延时。
例如,延时1000毫秒:
await waitFor(1000);
完整demo示例:
syncswap的swap功能(mock为scroll测试网):
{
name: "SyncSwap-D",
desc: "dapp交互",
category: "D-dexes",
type: "dapp",
url: "https://syncswap.xyz/",
mockBlock:
"0x570d42d58bf59b115e184d4d1eb990670d81e7f91d675bd19adb756786c90ed2",
mockTx: "0x881b2f5265238225907e865f328e42d2984a88a840132a903f2135ba715bb8e9",
inputs: { 金额: { type: "number", range: true } },
logic: async (context) => {
must(changeAccount);
await click("left,bottom");
await waitFor(200);
await focus("#swap-input div.row input");
await typeIn(getInput("金额",context));
await waitFor(1000);
await click("#swap-box button.swap-confirm");
},
}
scroll官方跨链桥(mock为scroll测试网):
{
name: "ScrollDepositETH-D",
desc: "dapp交互",
category: "D-跨链",
type: "dapp",
url: "https://scroll.io/bridge",
network: 5,
mockBlock: "0x7480fe62c855d86d91016764a2aa07374b17bc3213e9285ed13420875dc7da0c",
mockTx: "0xdb58a3010e17b83f042b9de3cc1434f935eaa44dbf45f6783d4c6702789c8bb8",
inputs: {
金额: {
type: "number",
range: true
}
},
logic: async (context) => {
must(changeAccount)
await waitFor(200)
await click("right,buttom")
await focus("#\\:r0\\:")
await typeIn(getInput("金额",context))
await click("#\\:r2\\:")
await waitFor(200)
await click("#\\:r4\\: > div > button")
}
}
如何寻找selector:
1、开发者工具直接复制:
在网页对应位置,右键“检查”,弹出开发者工具,并且定位到对应元素位置。右键,复制,复制对应selector。是最简单的获取selector的方法。
2、学习css选择器知识:
例如https://www.w3school.com.cn/css/css_selectors.asp
dapp脚本快速开发技巧:
有一些操作比较复杂,比如下拉选择等,还有一些无用的前置动作,比如需要把页面调整到某个合适开始的位置。
以上动作,我们都不建议去编写代码解决。应该调整到合适的位置后,开始编写代码(比如代币交换,常常需要选择合适的代币后开始)
因为我们的页面调整到合适位置后,后续重复动作,切换钱包地址,网页并不刷新,因此页面除此外均无变化。
mock解释与查找:
mock的引入,是为了达到快速确认目的。
mock必须填写正确。
同一个功能,不同链的mock信息不一样。
mock包含mockBlock与mockTx
一个是区块hash,一个是具体交易hash。
例如scroll跨链脚本中,我们找到同一合约过去成功的tx,任意一个即可。
比如:https://goerli.etherscan.io/tx/0xdb58a3010e17b83f042b9de3cc1434f935eaa44dbf45f6783d4c6702789c8bb8
此处0xdb58a3010e17b83f042b9de3cc1434f935eaa44dbf45f6783d4c6702789c8bb8即为mockhash
然后看到此交易属于9356174
区块,点击此区块号,进入https://goerli.etherscan.io/block/9356174
点击‘查看更多’,获取到此区块的hash为:0x7480fe62c855d86d91016764a2aa07374b17bc3213e9285ed13420875dc7da0c
即为mockBlock
Last updated