使用selenium导航到新页面时丢失cookies

2024-06-26 10:30:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Selenium和Python登录到一个页面,然后立即跳转到同一选项卡中的另一个页面。我需要保存页面的凭据,但是当我移动到新页面时,它们会丢失。在

我试过两件事——一件是把饼干保存好input.send U键(按键.回车)命令在下面的代码中使用泡菜。倾倒,然后在加载新页面后加载相同的cookies。另一个是在保存cookies后加载我制作的Firefox配置文件。在

这是我的代码:

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)

这些似乎都没用。我想可能需要一个延迟,所以我加了一个10秒的隐性等待,但这似乎没有什么不同。在

这是什么原因?我如何解决它?在


Tags: thefromimportsendgetbydriverselenium
1条回答
网友
1楼 · 发布于 2024-06-26 10:30:21

你可以试试这个:

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) 

确保加载cookies后,正在刷新页面。在

相关问题 更多 >