【问题标题】:WhatsApp Web automation for random messages with Selenium使用 Selenium 实现随机消息的 WhatsApp Web 自动化
【发布时间】:2021-02-16 14:45:21
【问题描述】:

请在第一条消息下方查看更新

我正在创建一个机器人来从 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))

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.

它会发送正确的密钥,但随后会点击随机元素。

【问题讨论】:

  • msg= random.choice(msg_1) , campo_msg.send_keys(msg) ?
  • @PDHide 它就像一个魅力谢谢!有什么问题?真的没看懂……
  • 如果你使用会发生什么:campo_msg.send_keys((random.choice(msg_1)))
  • 您的代码按原样运行
  • @PDHide 抱歉,刚刚找到确切的问题,但仍然不知道如何解决它。在我的语言中,我们使用信号 ´ ^ ~ 所以当字符串有它时,代码只是忽略逗号。我刚刚将项目编码更改为 UFT-8 但仍然无法正常工作。

标签: python selenium random automation whatsapp


【解决方案1】:

改用动作类

msg_1 = ["Olá, ", "Hello, "]  
campo_msg.click()  
webdriver.ActionChains(driver).send_keys(random.choice(msg_1)).perform()

这是一个有趣的问题,如果您在任何字符之后发送 á,它会选择所有其他字符。这就是为什么你只得到最后一个字符。 á 选择全部,下一个字符替换前面的字符串。您可以通过循环遍历 'olál' 的每个字符(睡眠时间为 2 秒)来验证这一点。

【讨论】:

  • 感谢 PDHide,它可以发送整个字符串。但是,现在它有点干扰自动化......对于我使用的一些webdriver.ActionChains(driver).send_keys(random.choice(...)).perform(),代码正在单击它不应该的元素。我会用代码 sn-p 更新我的问题,如果你能帮助我,我会很高兴。
猜你喜欢
  • 2022-01-07
  • 1970-01-01
  • 2021-02-15
  • 2017-06-22
  • 2021-10-09
  • 1970-01-01
  • 2021-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多