每次通过 Selenium WebDriver 无需扫描二维码的 WhatsApp

WhatsApp without QR code scanning everytime through Selenium WebDriver

在python中使用selenium和chrome webdriver访问WhatsApp网站时,是否有任何whatsapp或webdriver API无需每次扫描QR码即可访问它?

你的 "WhatsApp" 和 "QR Code" 没有告诉我任何信息,但是如果你正在测试需要额外操作才能登录的应用程序,我认为你将无法使用 Selenium 执行它,因为它是 浏览器 自动化框架。

Web 应用程序通过包含 client-side 信息的 Cookies - special HTTP Headers 来识别用户。当您通过 Selenium 绑定启动 Web 浏览器时 - 它会启动一个 clean 浏览器会话,该会话未在 "WhatsApp"(无论它是什么)

中进行身份验证

解决方案在:

  1. 手动在 WhatsApp 中进行身份验证,将您的浏览器配置文件存储在某处,然后通过将其指向较早的配置文件文件夹来启动 Selenium
  2. 在 WhatsApp 中手动验证,store your browser cookies and use WebDriver.add_cookie() 函数将存储的 cookie 读入当前干净的会话中

您可以使用 "pywhatkit"pywhatkit 用于使用whatsapp web 发送消息。 运行:

pip install pywhatkit 

一切顺利。

This is What you need. This code Read QR and store it in cookies

import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

jokes = ["You don't need a parachute to go skydiving. You need a parachute to go skydiving twice.",
    "This is Test Message."]

options = Options()
options.add_argument("--user-data-dir=chrome-data")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

driver = webdriver.Chrome('/usr/local/bin/chromedriver', options=options)
driver.maximize_window()
driver.get('https://web.whatsapp.com')  # Already authenticated

time.sleep(20)

##################### Provide Recepient Name Here ###############################
driver.find_element_by_xpath("//*[@title='MyJakartaNumber']").click()

for joke in jokes:
 driver.find_element_by_xpath('//*[@id="main"]/footer/div[1]/div[2]/div/div[2]').send_keys(joke)
 driver.find_element_by_xpath('//*[@id="main"]/footer/div[1]/div[3]/button/span').click()
 time.sleep(10)

time.sleep(30)
driver.close()