如何加载 cookie 并使用 selenium 打开多个选项卡?

How to load cookies and open multiple tabs with selenium?

如果我向程序提供 firefox 配置文件的路径,它将打开多个 windows,但如果没有,它会打开多个选项卡。我需要它来打开多个选项卡。有什么想法吗?

# driver = webdriver.Firefox(firefox_profile = r"C:\Users\Aron\AppData\Roaming\Mozilla\Firefox\Profiles\azz050gk.default-release")
driver = webdriver.Firefox(r'C:\Users\Aron\AppData\Roaming\Mozilla\Firefox\Profiles\azz050gk.default-release')
driver.get(sites['site'][0])
for i in range(size - 1,0, -1):
    driver.execute_script("window.open('" + sites['site'][i] +"');")

我用它来保存和加载 cookie:

# ===========================================================
def save_cookies(driver, site_name):
    cookies = driver.get_cookies()

    for cookie in cookies:
        if isinstance(cookie.get('expiry'), float):
            cookie['expiry'] = int(cookie['expiry'])
    pickle.dump(cookies, open(site_name + ".pkl", "wb"))


# =================================================================================
def load_cookies(driver, site_name):
    if not os.path.isfile(site_name + ".pkl"):
        return

    cookies = pickle.load(open(site_name + ".pkl", "rb"))
    for cookie in cookies:
        driver.add_cookie(cookie)

您需要获取站点,加载 cookie,重新加载,保存 cookie。第一次您必须手动接受 cookie。之后它应该被保存。

from selenium import webdriver
import os
import pickle
import time

# ==============================================================
def save_cookies(driver, site_name):
    cookies = driver.get_cookies()

    for cookie in cookies:
        if isinstance(cookie.get('expiry'), float):
            cookie['expiry'] = int(cookie['expiry'])
    pickle.dump(cookies, open(site_name + ".pkl", "wb"))


# ===============================================================
def load_cookies(driver, site_name):
    if not os.path.isfile(site_name + ".pkl"):
        return

    cookies = pickle.load(open(site_name + ".pkl", "rb"))
    for cookie in cookies:
        driver.add_cookie(cookie)


# ==========================================================

# open the web driver ----------------------------------
project_dir = os.path.split(os.getcwd())[0] + '/../'
driver = webdriver.Chrome(executable_path=os.path.join(project_dir, 'chromedriver.exe'))

site_url = 'https://bol.com'
site_name = 'bol.com'

driver.get(site_url)  # site must be loaded before cookies can be loaded
load_cookies(driver, site_name)
driver.get(site_url)  # now the site is reloaded using the cookies

# get some time to manually accept the cookies the first run
time.sleep(10)

# do your scraping 

save_cookies(driver, site_name)

driver.close()

下次 'accept cookies' 应该不会出现了。

这适用于我在 windows 上为 chrome 驱动程序打开一个新选项卡:

driver.get("http://www.google.com/")

#open tab
driver.execute_script('''window.open("http://bings.com","_blank");''')

driver.close()