потеря куки при переходе на новую страницу с селеном - PullRequest
0 голосов
/ 24 июня 2018

Я использую Selenium с Python, чтобы войти на страницу, а затем сразу перейти на другую страницу в той же вкладке. Мне нужно сохранить учетные данные на странице, но в случае перехода на новую страницу они теряются.

Я испробовал 2 вещи - одно - сохранить файлы cookie после команды input.send_keys (keys.ENTER) в приведенном ниже коде с помощью pickle.dump, а затем загрузить те же файлы cookie после загрузки новой страницы. Другой способ - просто загрузить профиль Firefox, который я создал после сохранения файлов cookie.

Вот мой код:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pickle
from selenium.webdriver.firefox.webdriver import FirefoxProfile

profile = FirefoxProfile("C:\\Users\\ace\\AppData\\Local\\Mozilla\\Firefox\\Profiles\\l4piuit9.ace")
driver = webdriver.Firefox(profile)
driver.get("https://forums.the-elite.net/index.php?action=login")

# #handle the form data and log in by forcing an enter
inputElement1 = driver.find_element_by_name("cookieneverexp").click()
inputElement2 = driver.find_element_by_name("user")
inputElement2.send_keys('REMOVED')
inputElement3 = driver.find_element_by_name("passwrd")
inputElement3.send_keys('REMOVED')
inputElement3.send_keys(Keys.ENTER)

#save the cookies, they don't transfer over when navigating to a new page
#pickle.dump(driver.get_cookies(), open("elite.pkl", "wb"))

#new page / poll
driver.get("https://forums.the-elite.net/index.php?action=votelog;topic=22504")

#get the cookies
#cookies = pickle.load(open("elite.pkl", "rb"))
#for cookie in cookies:
#    driver.add_cookie(cookie)

Ничто из этого, похоже, ничего не делает. Я подумал, что может потребоваться задержка, поэтому я включил implicit_wait в 10 с, но это, похоже, не имело значения.

В чем причина этого и как я могу устранить это?

1 Ответ

0 голосов
/ 24 июня 2018

Вы можете попробовать это:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC 
import pickle

browser = webdriver.Chrome(executable_path = r'D:/Automation/chromedriver.exe')
browser.get("https://forums.the-elite.net/index.php?action=login")

wait = WebDriverWait(browser, 30)

browser.execute_script("window.scrollTo(0, -200)") 

username = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "form#guest_form input[name='user']")))
username.send_keys('Removed')

password = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "form#guest_form input[name='passwrd']")))
password.send_keys('Removed')
password.send_keys(Keys.RETURN)

def save_cookie(browser, path):
    with open(path, 'wb') as filehandler:
        pickle.dump(browser.get_cookies(), filehandler)

def load_cookie(browser, path):
     with open(path, 'rb') as cookiesfile:
         cookies = pickle.load(cookiesfile)
         for cookie in cookies:
             driver.add_cookie(cookie) 

Убедитесь, что после загрузки файлов cookie вы обновляете страницу .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...