如何在Whatsap上保存硒会话

时间:2018-12-12 15:20:03

标签: python python-3.x selenium selenium-webdriver

我有代码“ Auto Sender Notify”,但是问题是我每次都需要扫描QR码。

有人知道保存cookie并将其添加到代码中的方法,以便它们一起工作吗?

非常感谢

from time import sleep
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
import socket
​
message_text='bla bla' # message you want to send
no_of_message= 1 # no. of time you want the message to be send
moblie_no_list=[1565626322] # list of phone number can be of any length
​
def element_presence(by,xpath,time):
    element_present = EC.presence_of_element_located((By.XPATH, xpath))
    WebDriverWait(driver, time).until(element_present)
​
def is_connected():
    try:
        # connect to the host -- tells us if the host is actually
        # reachable
        socket.create_connection(("www.google.com", 80))
        return True
    except :
        is_connected()
driver = webdriver.Chrome(executable_path="chromedriver.exe")
driver.get("http://web.whatsapp.com")
sleep(10) #wait time to scan the code in second
​
def send_whatsapp_msg(phone_no,text):
    driver.get("https://web.whatsapp.com/send?phone={}&source=&data=#".format(phone_no))
    try:
        driver.switch_to().accept()
    except Exception as e:
        pass
​
    try:
        element_presence(By.XPATH,'//*[@id="main"]/footer/div[1]/div[2]/div/div[2]',30)
        txt_box=driver.find_element(By.XPATH , '//*[@id="main"]/footer/div[1]/div[2]/div/div[2]')
        global no_of_message
        for x in range(no_of_message):
            txt_box.send_keys(text)
            txt_box.send_keys("\n")
​
    except Exception as e:
        print("invailid phone no :"+str(phone_no))
for moblie_no in moblie_no_list:
    try:
        send_whatsapp_msg(moblie_no,message_text)
​
    except Exception as e:
        sleep(10)
        is_connected()

1 个答案:

答案 0 :(得分:0)

将cookie保存到文件中,以便以后阅读。

    for datum in data:
          datum_name = datum.get("name", None)
          if any(datum_name in s for s in image_names):
                 images_ids.append(datum.get("id", None))

要使用它

import json

def saveCookies(driver):
    cookies = driver.get_cookies()
    with open('cookies.json', 'w') as f:
        f.write(json.dumps(cookies))

def setCookies(driver):
    try:
        with open('cookies.json', 'r') as f:
            for cookie in json.load(f):
                driver.add_cookie(cookie)
    except: pass