我在尝试发送带有selenium的whatsapp时遇到错误和回溯

2024-04-24 05:39:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图发送一个带有selenium和chromedriver的whatsapp,但是当我运行代码时,我得到一个错误和一个回溯。

我已经尝试了我能做的一切(我对python略知一二,我在学习,我对selenium一无所知,但我必须尽快让它工作起来),我也尝试了很多,尝试了很多东西,但我无法让它工作。

如果有人能帮助我,我将非常感激

错误是:

[WDM] - ====== WebDriver manager ====== [WDM] - Current google-chrome version is 89.0.4389 [WDM] - Get LATEST driver version for 89.0.4389 [WDM] - Driver [C:\Users\Crist.wdm\drivers\chromedriver\win32\89.0.4389.23\chromedriver.exe] found in cache

DevTools listening on ws://127.0.0.1:56076/devtools/browser/0c5e0486-3e61-47d1-80f0-7ecfe21ffb6e Scan QR Code, And then Enter

Logged In [14880:8104:0320/205615.019:ERROR:device_event_log_impl.cc(214)] [20:56:15.018] USB: usb_device_handle_win.cc:1056 Failed to read descriptor from node connection: Uno de los dispositivos conectados al sistema no funciona. (0x1F) [14880:8104:0320/205615.046:ERROR:device_event_log_impl.cc(214)] [20:56:15.046] Bluetooth: bluetooth_adapter_winrt.cc:1072 Getting Default Adapter failed. Traceback (most recent call last): File "C:\Users\Crist\Desktop\Whattsapp mama\prueba.py", line 19, in input_box_search = WebDriverWait(driver,50).until(lambda driver: driver.find_element_by_xpath(inp_xpath_search)) File "C:\Users\Crist\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message:

C:\Users\Crist\Desktop\Whattsapp mama>[14880:8104:0320/210116.161:ERROR:device_event_log_impl.cc(214)] [21:01:16.161] USB: usb_service_win.cc:258 Failed to get device driver name: No se ha encontrado el elemento. (0x490)

代码是这样的(这正是让它工作所需要的):

contact = ["cristobal de toro", "cristobal", "gonzalo molina"]
text = "Hey, this message was sent using Selenium"
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://web.whatsapp.com")
print("Scan QR Code, And then Enter")
input()
print("Logged In")
inp_xpath_search = "//input[@title='Search or start new chat']"
input_box_search = WebDriverWait(driver,50).until(lambda driver: driver.find_element_by_xpath(inp_xpath_search))
input_box_search.click()
time.sleep(2)
input_box_search.send_keys(contact)
time.sleep(2)
selected_contact = driver.find_element_by_xpath("//span[@title='"+contact+"']")
selected_contact.click()
inp_xpath = '//div[@class="_2S1VP copyable-text selectable-text"][@contenteditable="true"][@data-tab="1"]'
input_box = driver.find_element_by_xpath(inp_xpath)
time.sleep(2)
input_box.send_keys(text + Keys.ENTER)
time.sleep(2)
driver.quit()

Tags: boxinputsearchdevicedriverseleniumcontactelement
1条回答
网友
1楼 · 发布于 2024-04-24 05:39:01

因此,我查看了whatsapp web版本的代码,似乎每次刷新页面时,每个联系人都会被分配到一个随机uid(至少在我的情况下是这样)。这意味着您需要使用pyautogui之类的工具来单击页面上可预测的位置。至于实际的输入区域,它甚至不是一个输入,所以selenium在这种情况下不起作用。我只是写了一些示例代码来说明这是如何工作的——我在一台13英寸的笔记本电脑上,所以你可能需要用

pyautogui.position()

使用以下软件安装pyautogui:

python3 -m pip install pyautogui

下面是示例代码:

import pyautogui
import os
import time

FIRSTX = 155
FIRSTY = 268

INPUTX = 605
INPUTY = 696






os.system('open https://web.whatsapp.com/')
time.sleep(7)

#Click on the first person in your contacts
pyautogui.click(x=FIRSTX, y=FIRSTY)
time.sleep(1)


#Click the input
pyautogui.click(x=INPUTX, y=INPUTY)
pyautogui.write("Your Message")
pyautogui.press('enter')

相关问题 更多 >