因此,我正在一个简单的机器人上向多个Whatsapp联系人发送消息。我将以下代码注入到Whatsapp网页中,它非常适合一条消息。然后,当我使用sendMessageToPhoneList将其发送到电话号码数组时,它对于第一个消息/迭代工作正常,但下一个消息/迭代却给我以下错误:未捕获(承诺)TypeError:无法读取null的属性“ document”。
function sendMessage(phone, encodedMessage) {
return new Promise(resolve => {
var wppURL, wppPage;
wppURL = "https://web.whatsapp.com/send?phone="+phone+"&text="+encodedMessage;
wppPage = window.open(wppURL);
var send = function() {
var sendButton = wppPage.document.getElementsByClassName("_3M-N-")[0];
if (sendButton) {
sendButton.click();
setTimeout(function() {
wppPage.close();
resolve(true);
}, 10000);
} else {
setTimeout(send, 1000);
}
};
send();
});
}
async function sendMessageToPhoneList(phoneList, encodedMessage) {
for (i=0; i < phoneList.length; i++) {
await sendMessage(phoneList[i], encodedMessage);
}
}
代码有问题吗?有人可以给我一些见识吗?谢谢!
最佳答案
问题是chrome会再次打开相同的标签,因此即使您打开窗口时,多个具有相同名称和chome的窗口也不允许它更改代码,因此您使用了不同的窗口名称,并且应该对其进行修复。
例如:
wppURL = "https://web.whatsapp.com/send?phone="+phone+"&text="+encodedMessage;
wppPage = window.open(wppURL, wppURL); // second parameter is for window name