【问题标题】:Python selenium WhatsApp botPython selenium WhatsApp 机器人
【发布时间】:2021-07-23 19:16:48
【问题描述】:

我正在尝试在 WhatsApp 中创建一个机器人,但我一直遇到
NoSuchElementException
我的代码如下:

from selenium import webdriver
Import time

Firefox_browser = webdriver.Firefox(executable_path="/usr/bin/geckodriver")
Firefox_browser.get('https://web.whatsapp.com/')

time.sleep(15)

firefox_browser.switch_to_frame(firefox_browser.find_element_by_name("WhatsAppBot"))
firefox_browser.find_element_by_xpath('//span[@title="WhatsAppBot"]).click()

【问题讨论】:

    标签: python selenium bots whatsapp


    【解决方案1】:

    该页面上没有name 属性等于WhatsAppBot 的元素

    【讨论】:

    • 我是 python 新手,所以我尽快寻求帮助
    • 不,我不会为你做你的工作。尤其是当我不知道你想在这里做什么的时候。
    • 我想建立一个 whatsapp 机器人来响应我最近的聊天
    • whatsapp bot 将使用 python 和 selenium 构建
    • 太棒了!去做吧
    【解决方案2】:

    正如另一个答案已经指出的那样,您在最后两行中尝试做的事情没有意义。 xpath/name 函数的查找元素期望指向 Whatsapp 上的某个元素。 WhatsApp 网页上没有名为“WhatsAppBot”的元素。

    不幸的是,您没有提供很多信息来使用,但是,我认为您想要实现的目标可能类似于 this 教程。当我尝试通过 Whatsapp 发送自动消息时,我自己使用了这个。

    以下代码是我用于我自己的小型机器人的代码,主要遵循前面提到的教程:

    import time
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    
    # SPECIFY PATH FOR CHROME DRIVER HERE
    driverPath = 'D:chromedriver_win32\\chromedriver.exe'
    # SPECIFY PATH FOR USER DIRECTORY (just change "TEST" to your WIN10 username)
    userPath = "--user-data-dir=C:\\Users\\TEST\\AppData\\Local\\Google\\Chrome\\User Data"
    # SPECIFY MESSAGES HERE
    messages = ["Testmessage 1", "Testmessage 2"]
    
    
    # bypass QR code login after first login
    options = Options()
    options.add_argument(userPath)
    options.add_experimental_option('useAutomationExtension', False)
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    driver = webdriver.Chrome(driverPath, options=options)
    
    # open specified whatsapp chat
    driver.maximize_window()
    driver.get('https://web.whatsapp.com')
    time.sleep(10)
    driver.find_element_by_xpath("//*[@title='INSERT NAME OF CHAT HERE']").click()
    
    # Send message
    driver.find_element_by_xpath('//*[@id="main"]/footer/div[1]/div/div/div[2]/div[1]/div/div[2]').send_keys(messages[0])
    driver.find_element_by_xpath('//*[@id="main"]/footer/div[1]/div/div/div[2]/div[2]/button').click()
    driver.close()
    

    请注意,此代码使用的是 chrome 驱动程序。

    在未来,whatsapp 布局可能会发生变化,这意味着给定的 xpath 可能会产生与您类似的错误,因为元素排列发生了变化。在这种情况下,您需要找到要在其上执行任务的元素的新 xpath(即单击它)并在代码中更新它。您可以通过在 Whatsapp Web 上按 F12 轻松做到这一点,然后按 Ctrl + Shift + C 并单击该元素。然后该元素在屏幕右侧突出显示,如果您右键单击它,您将看到选项“复制 -> 复制 xpath”。这是您需要粘贴到 find_element_by_xpath 函数中才能正常工作的路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-02
      • 2020-01-22
      • 2021-10-01
      • 1970-01-01
      • 2016-05-31
      • 2019-01-23
      • 2021-10-12
      • 1970-01-01
      相关资源
      最近更新 更多