python - 使用 Selenium Webdriver 检测是否发送了 WhatsApp 消息

标签 python python-3.x selenium selenium-webdriver

我正在尝试制作一个程序,如果其他人发送消息,它会在 WhatsApp 上发送消息,但我不知道如何检查何时发送了 WhatsApp 消息。

我不需要阅读消息的内容,但它会是一个奖励

import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# messages to send
messages = ["Message 1", "Message 2"]

options = Options()
options.add_argument("--user-data-dir=chrome-data")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
options.binary_location = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"

driver = webdriver.Chrome(r'C:\ProgramData\chocolatey\lib\chromedriver\tools\chromedriver.exe', options=options)
driver.maximize_window()
driver.get('https://web.whatsapp.com')  # must be pre-authenticated 

time.sleep(20)

#Recepient Name
driver.find_element_by_xpath("//*[@title='example]").click()

for message in messages:
    driver.find_element_by_xpath('//*[@id="main"]/footer/div[1]/div[2]/div/div[2]').send_keys(message)
    driver.find_element_by_xpath('//*[@id="main"]/footer/div[1]/div[3]/button/span').click()
    time.sleep(5)

任何帮助将不胜感激

最佳答案

当您发送消息时,消息右下角有一个小图标,您可以获取此元素并检查 accessible_name 属性是否为 "Sent"“阅读”“已交付”

例子如下: Icon you need to locate

if ".m4v" in file_path or ".mp4" in file_path or ".3gpp" in file_path or ".mov" in file_path:
    is_sent = self.wait_fast.until(ec.visibility_of_element_located((By.CSS_SELECTOR,  "#main > div._2gzeB > div > div._33LGR > div._3K4-L > div._2wUmf._1q25n.message-out.focusable-list-item > div > div.Nm1g1._22AX6 > div.copyable-text > div > div._19jKW > div > div > span")))
else:
    is_sent = self.wait_fast.until(ec.visibility_of_element_located((By.CSS_SELECTOR,  "#main > div._2gzeB > div > div._33LGR > div._3K4-L > div._2wUmf._1q25n.message-out.focusable-list-item > div > div.Nm1g1._22AX6 > div.cm280p3y.f4q7vbcz.ocd2b0bc.folpon7g.aa0kojfi.snweb893.g0rxnol2.jnl3jror.copyable-text > div > div.lrw9n60e.lhggkp7q.fz4q5utg.b9fczbqn > div > div > span")))

我正在使用 CSS_SELECTOR,选择器会根据消息的类型而有所不同,无论是文本、图像还是视频。

找到它后,您可以检查 accessible_name 属性是 "Sent""Read" 还是 "Delivered"

关于python - 使用 Selenium Webdriver 检测是否发送了 WhatsApp 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65751989/

相关文章:

python - 使用pyaudio创建语音识别程序但出现问题

python - 我已经附上了我的代码。请查看并告诉我错误的原因。解释一下?

python - TensorFlow 自己保存一个 SparseTensor

java - 在 testng 中使用 selenium 中的函数时如何保持代码干燥?

java - 在 try catch 中循环,在 selenium 的 do while 循环条件下抛出异常

python - 算术运算中的 Yaml 类型转换变量

python - 使用 Pexpect 通过命令行将 Python 与 Fortran 连接

Python 字符编码

python - OpenCV (Python) 视频子图

python-3.x - 使用 Python 在运行时将 selenium 结果/输出保存在文本文件中