python-3.x - 使用 selenium 和 python 自动化 WhatsApp
问题描述
我使用 python 和 selenium 制作了这个简单的 whatsapp 机器人。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://web.whatsapp.com/')
target = "Someone"
msg = "Something"
input('Press Enter after scanning QR Code...')
TargetXML = driver.find_element_by_xpath('//span[@title = "
{}"]'.format(target))
TargetXML.click()
MsgBox = driver.find_elements_by_class_name('_1Plpp')
MsgBox[0].send_keys(msg)
SendButton = driver.find_elements_by_class_name('_35EW6')
SendButton[0].click()
在第一次运行时,我有MsgBox.send_keys(msg)
andSendButton.click()
而不是你在脚本中看到的给出错误AttributeError: 'list' object has no attribute 'send_keys'
的AttributeError: 'list' object has no attribute 'click'
.
我将它们更改为索引 0 解决了错误并且脚本工作得非常好,但我真的不明白为什么它与第 0 个索引中的元素一起工作,所以我尝试打印元素并得到输出,因为<selenium.webdriver.remote.webelement.WebElement (session="bd86fe53729956ba1fc3b16cf841a1a8", element="0.5125252686493715-2")>
我仍然不相信它并牢记这个问题。任何帮助,将不胜感激!谢谢!
解决方案
方法“find_elements_by_class_name”返回满足参数中类名的元素列表。此列表由 WebElement 组成,当您选择第 0 个元素时,您将获得 WebElement 的对象,您可以在该对象上应用 send_keys() 和 click() 方法。
有关 Selenium 和 WebElement 对象的更多信息,请参阅此文档。
推荐阅读
- pycharm - PyCharm 无法解析 __dict__ 中的参数
- c - 使用 char * 输出指向 int 数组
- oracle - 在 oracle 查询中表示日期的更好方法
- node.js - 直接从 IBM COS(云对象存储)流式传输?
- c# - C# 任何识别数基的方法?
- javascript - Thymeleaf:在 Javascript 中使用带有 'th:href' 的链接
- excel - Excel - 从一系列日期计算天数(忽略重复)
- c - ac源文件中的“#num string”有什么作用
- module - 为什么 Contao 在本地环境和远程环境中表现出不同的行为?
- ruby-on-rails - has_secure_password 没有加密我的密码