首页 > 解决方案 > 使用 selenium 和 python3.8 加入 whatsapp 组时出现 NoSuchElementException

问题描述

我正在尝试使用 selenium 和 python 自动加入 WhatsApp 组。我几乎可以到达最后一页,但找不到加入群组按钮。这是我的python代码。请注意,首先我使用 5 秒的等待时间登录 WhatsApp。

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
  
# create webdriver object
driver = webdriver.safari.webdriver.WebDriver(quiet=False)

driver.get("https://web.whatsapp.com/")
import time 
time.sleep(5)


driver.get("https://chat.whatsapp.com/invite/ANY_WA_GROUP_LINK")

# create action chain object
action = ActionChains(driver)

element = driver.find_element_by_link_text("Join Chat")
action.click(on_element = element)
action.perform()

element = driver.find_element_by_link_text("use WhatsApp Web")
action.click(on_element = element)
action.perform()

element = driver.find_element_by_link_text("Join group")
action.click(on_element = element)
action.perform()

以下是我得到的错误。

Traceback (most recent call last):
  File "basic.py", line 25, in <module>
    element = driver.find_element_by_link_text("Join group")
  File "/Users/Home/WorkSpace/anaconda3/envs/env_auto/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 428, in find_element_by_link_text
    return self.find_element(by=By.LINK_TEXT, value=link_text)
  File "/Users/Home/WorkSpace/anaconda3/envs/env_auto/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 976, in find_element
    return self.execute(Command.FIND_ELEMENT, {
  File "/Users/Home/WorkSpace/anaconda3/envs/env_auto/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/Users/Home/WorkSpace/anaconda3/envs/env_auto/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message:

标签: pythonpython-3.xseleniumselenium-webdriverautomation

解决方案


如果您的定位器是正确的,您将错过之前的等待/延迟element = driver.find_element_by_link_text("Join Chat")
所以,只需尝试添加

time.sleep(5)

element = driver.find_element_by_link_text("Join Chat")

UPD:试试这个:

element = driver.find_element_by_xpath('//div[contains(text(),'Join group')]')

推荐阅读