Мы все знаем, что селен может управлять браузером Chrome, открытым из командной строки, и может загружать локальные данные, поэтому мы можем обойти этапы входа на некоторые веб-сайты и напрямую управлять веб-сайтом. Если мы не добавим никаких параметров, браузер, открытый драматургом, будет работать в режиме инкогнито. В обычных обстоятельствах для нас, тестировщиков, это не влияет на наше использование. Но драматург по-прежнему предоставляет нам launch_persistent_context для запуска локального браузера Chrome.
При запуске браузера добавьте --user-data-dir в каталог пользовательских данных, чтобы запустить браузер с плагинами и запомнить данные файлов cookie пользователя. Примеры:
import time
from selenium import webdriver
import getpass
# Включите браузеры с плагинами
option = webdriver.ChromeOptions()
option.add_argument(f"--user-data-dir=C:\\Users\\{getpass.getuser()}\\AppData\Local\Google\Chrome\\User Data")
driver = webdriver.Chrome(options=option) # Открыть браузер хром
driver.maximize_window()
driver.get("https://www.baidu.com")
time.sleep(10)
Запустите скрипт, результат такой, как показано ниже, пользовательские данные Baidu загружаются автоматически:
Метод launch_persistent_context запускает локальный браузер Chrome и устанавливает канал = "chrome"
import getpass
from playwright.sync_api import sync_playwright
# получать google chrome файл локального кэша
USER_DIR_PATH = f"C:\\Users\\{getpass.getuser()}\\AppData\Local\Google\Chrome\\User Data"
with sync_playwright() as p:
browser = p.chromium.launch_persistent_context(
# Укажите адрес локального кэша пользователя
user_data_dir=USER_DIR_PATH,
# Получать события загрузки
accept_downloads=True,
# настраивать GUI модель
headless=False,
bypass_csp=True,
slow_mo=1000,
channel="chrome",
)
page = browser.new_page()
page.goto("https://www.baidu.com")
page.pause()
Запустите скрипт, и браузер откроется следующим образом:
Примечание. Перед запуском скрипта необходимо закрыть браузер.
Параметр args необходимо настроить при загрузке плагина браузера Chrome. Пример следующий:
import getpass
from playwright.sync_api import sync_playwright
# получать google chrome файл локального кэша
USER_DIR_PATH = f"C:\\Users\\{getpass.getuser()}\\AppData\Local\Google\Chrome\\User Data"
# chrome.exe указывает путь к исполняемому файлу
# Каталог плагинов Chrome, распакуйте crx после загрузки
path_to_extension = r"C:\Users\xxxxx\AppData\Local\Google\Chrome\User Data\Default\Extensions"
with sync_playwright() as p:
browser = p.chromium.launch_persistent_context(
# Укажите адрес локального кэша пользователя
user_data_dir=USER_DIR_PATH,
# executable_path=executable_path, # При необходимости вы можете скачать chrome.exe в указанную директорию и загрузить его.
# Получать события загрузки
accept_downloads=True,
# настраивать GUI модель
headless=False,
bypass_csp=True,
slow_mo=1000,
channel="chrome",
args=[
f"--disable-extensions-except={path_to_extension}",
f"--load-extension={path_to_extension}"
], # Загрузить расширение
)
Примечание. Расширения для загрузки необходимо использовать в режиме интерфейса, то есть headless=false.
При необходимости Используйте прокси,Вы можете добавить параметры прокси,Добавьте следующее:
proxy=ProxySettings(server="http://xxx.xxx.xxx.xxx:xxxx")
В этой статье в основном рассказывается, как драматург запускает локальный браузер и загружает локальный плагин. Запуск локального браузера позволяет управлять веб-страницей без входа в систему, что экономит нам время на вход.