使用selenium- c#防止每次在Whatsapp自动化上加载页面



出于个人原因,我正在使用静默和c#与web Whatsapp开发Whatsapp的自动化。我目前在2问题

  1. 我的号码在发送消息时被阻塞,因为我已经在每个请求中放置了10-15秒的延迟。
  2. 每次我的页面重新加载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)

如果开路电流数

相关内容

  • 没有找到相关文章

最新更新