请查看第一条消息下面的更新
我正在创建一个机器人来从 WhatsApp Web 发送随机消息。
msg_1 = ["Hey, ", "Hello, "]
print(random.choice(msg_1))
上面的代码工作正常,但是当我在 Selenium 中将它与 send_keys
一起使用时,结果只是逗号和空格。
msg_1 = ["Hey, ", "Hello, "]
campo_msg = self.driver.find_element_by_xpath('...')
campo_msg.click() # Tried with a click to see If It solves the problem
campo_msg.send_keys(random.choice(msg_1))
结果总是“,” in campo_msg
...如果我只使用send_keys
发送一个字符串,它工作正常,那么我做错了什么?
更新
问题是我的列表中包含带有“á”的单词,因此它仅在“á”之后发送以下字符。
按照 PDHide 建议使用 ActionChains
,我现在可以使用 random.choice()
发送正确的字符串。问题是,有时它看起来像是在点击不应该的元素......这是一个例子:
...
campo_msg = self.driver.find_element_by_xpath(
'/html/body/div[1]/div/div/div[4]/div/footer/div[1]/div[2]/div/div[2]')
campo_msg.click()
webdriver.ActionChains(self.driver).send_keys(random.choice(msg_1) + primeiro_nome + '.').perform()
campo_msg.send_keys(Keys.SHIFT + Keys.ENTER)
campo_msg.send_keys(Keys.SHIFT + Keys.ENTER)
webdriver.ActionChains(self.driver).send_keys(random.choice(msg_2) + random.choice(msg_3)
+ random.choice(msg_4)).perform()
# The line above is were the code makes a click on an element that was not even on the code.
它发送正确的 key ,但随后它会点击随机元素。
最佳答案
改用 Action 类
msg_1 = ["Olá, ", "Hello, "]
campo_msg.click()
webdriver.ActionChains(driver).send_keys(random.choice(msg_1)).perform()
这似乎是一个有趣的问题,如果您在任何字符之后发送 á ,它就会选择所有其他字符。这就是为什么你只得到最后一个字符。 á 选择全部,下一个字符将替换前面的字符串。您可以通过循环遍历“olál”的每个字符并 sleep 2 秒来验证这一点。
关于python - 使用 Selenium 实现 WhatsApp Web 自动化随机消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66226569/