Python Selenium send_keys 在 WhatsaApp Web 的消息框中只写一个字符



我正在尝试在WhatsApp Web(MacOS,Firefox)上发送自动消息,我想使用Selenium(pywhatkit也可以),但send_keys只发送第一个字符。

代码
的所有"导入"from selenium import webdriverfrom selenium.webdriver.common.keys import Keys

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import Byfrom selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.firefox.service import Service
import time

TXT_BAR='/html/body/div[1]/div/div/div[4]/div/footer/div[1]/div/[2]/div/div[2]/div[1]'

txt_bar = wait.until(EC.presence_of_element_located((By.XPATH, TXT_BAR)))
txt_bar.click()
txt_bar.clear()
txt_bar.send_keys("help")
time.sleep(5)
txt_bar.send_keys(Keys.ENTER)
time.sleep(2)
#output -> h

编辑的代码:

txt_bar = wait.until(EC.element_to_be_clickable((By.XPATH, TXT_BAR)))
txt_bar.click()
txt_bar.clear()
txt_bar.send_keys("help")
txt_bar.send_keys(Keys.ENTER)
#output -> h

我遇到了类似的问题。这可能是Facebook用来防止自动化的安全措施。 一种特殊的解决方案是使用循环。下面是一个示例: 文本="你好,世界" 对于文本中的文本: send_keys(文本)

WhatsApp Web 元素是动态元素。理想情况下,要将字符序列发送到元素而不是presence_of_element_located(),您需要诱导 WebDriverWait 的element_to_be_clickable(),并且可以使用以下定位器策略

txt_bar = wait.until(EC.element_to_be_clickable((By.XPATH, TXT_BAR)))
txt_bar.click()
txt_bar.clear()
txt_bar.send_keys("help")
txt_bar.send_keys(Keys.ENTER)

注意:您必须添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

最新更新