出于个人原因,我正在使用静默和c#与web Whatsapp开发Whatsapp的自动化。我目前在2问题
- 我的号码在发送消息时被阻塞,因为我已经在每个请求中放置了10-15秒的延迟。
- 每次我的页面重新加载whastapp调用我需要防止它,并想要直接放置消息的任何方式吗?注:数字是动态的,来自数据库。
private void msgnew(string number, string message, int len, string oldnumber)
{
driver.Navigate().GoToUrl("https://web.whatsapp.com/send?phone=" + number + "&text=" + Uri.EscapeDataString(message) + "&lang=en&app_absent=1");
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);
driver.FindElement(By.CssSelector("button._4sWnG>span")).Click();//Click SEND Arrow Button
}
你可以在js中这样做:
js = """
var [ num ] = [ arguments[0]];
function openChat (t) {
var e;
t&&((e=document.createElement("a")).setAttribute("href","whatsapp://send?phone="+t),document.body.appendChild(e),e.click(),e.outerHTML="",setTimeout(1,1e3))
}
return openChat(num)
"""
现在使用ExecuteScript,
python中的
js = """
var [ num ] = [ arguments[0]];
function openChat (t) {
var e;
t&&((e=document.createElement("a")).setAttribute("href","whatsapp://send?phone="+t),document.body.appendChild(e),e.click(),e.outerHTML="",setTimeout(1,1e3))
}
return openChat(num)
"""
self.driver.execute_script(js, number)
和检查当前号码是否打开:
js = """
var [ t ] = [ arguments[0]];
if (document.querySelectorAll(`[data-id*="${t}@"]`).length > 0 || (document.querySelector(`#main header span[title]`) && document.querySelector(`#main header span[title]`).title.replace(/s/g, '').replace('-', '').replace('+','').replace('', '').replace('', '') == t)
){
return true
}
"""
r = self.driver.execute_script(js, number)
如果开路电流数