python 使用selenium检测whatsapp消息的传递

r8xiu3jd  于 2023-09-29  发布在  Python
关注(0)|答案(1)|浏览(121)

我有一个WhatsApp机器人,可以发送图像和视频,但我无法确保附件被发送。我已经尝试了几种方法来解决这个问题,这是我的最后一个想法是打开下拉菜单上方的最后一条消息,并检查是否交付框中有'今天'一词。

try:
    menu = driver.find_element(By.CSS_SELECTOR, '#main > div._3B19s > div > div._5kRIK > div.n5hs2j7m.oq31bsqd.gx1rr48f.qh5tioqs > div:nth-child(14) > div > div > div > div._1BOF7._2AOIt > span > div > div > span').click()
    msg_info = driver.find_element(By.CSS_SELECTOR, '#app > div > span:nth-child(4) > div > ul > div > li:nth-child(1) > div')
    status = driver.find_element(By.XPATH, '//*[@id="app"]/div/div/div[6]/span/div/span/div/div[2]/div/div/div[2]/div[2]/div[2]/div')
            if 'today' in status.text():
    return True
except NoSuchElementException:
    return False

这段代码的问题是菜单目前不可点击,需要将鼠标悬停在菜单上才能点击。有没有办法解决这个问题,或者直接定义消息底部图标的状态?

sczxawaw

sczxawaw1#

有两种方法可以解决你的问题。
第一种方法是在Selenium中使用操作。你可以使用以下代码来实现这一点:

from selenium.webdriver.common.action_chains import ActionChains
actions = ActionChains(driver)
actions.move_to_element(element)
action.click(element)
#Any other steps
actions.perform()

这段代码会将鼠标光标移动到元素的中心,然后您可以单击它。你可以在这里了解更多关于action_chain的信息
检查消息是否已发送的第二种更直接的方法是检查WhatsApp元素的HTML。下面是相关的HTML片段:

<span aria-label="Read" data-icon="msg-dblcheck" class="k17s6i4e">

如您所见,有一个名为'aria-label'的属性。在获取元素后,您可以检查此属性以确定消息是否已发送。下面是一个示例,说明如何做到这一点:

message_status = driver.find_element(By.CSS_SELECTOR, 'actual css').get_attribute('aria-label')

相关问题