I was able to save the session by adding a start-option to chrome -> You need to add the option --user-data-dir <folder>
.
I've used code from these places.
I'm running this code under Ubuntu 18.04.
Close google-chrome before runnning this code. Else selenium will re-use the current browser instance and won't be able to run it with the --user-data-dir <folder>
-option.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
# Replace below path with the absolute path
# to chromedriver in your computer
options = webdriver.ChromeOptions();
options.add_argument("user-data-dir=~/.chrome_driver_session")
# Create the folder. Change path accordingly
driver = webdriver.Chrome('./chromedriver_78/chromedriver', chrome_options=options)
driver.get("https://web.whatsapp.com/")
wait = WebDriverWait(driver, 600)
# Replace 'Friend Name' with the name of your friend or the name of a group
target = '"Friend Name"'
# Replace the below string with your own message
# I'm unsure why it needs two empty spaces in front of it.
string = " " + "Nachricht von Wichtel_Whatsapp"
x_arg = '//span[contains(@title,' + target + ')]'
group_title = wait.until(EC.presence_of_element_located((By.XPATH, x_arg)))
group_title.click()
print("Clicked")
default_input = "Schreib eine Nachricht"
# Change the Text with the default of the input-field
inp_xpath = "//div[contains(.,'" + default_input + "')]"
input_box = wait.until(EC.presence_of_element_located((By.XPATH, inp_xpath))).find_element_by_xpath('..')
input_box.send_keys(string)
# If the Text is written in the input field, use this line:
# input_box.send_keys(string + Keys.ENTER)