import os
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import pyautogui
import subprocess
# 关闭所有打开的 Chrome 浏览器实例
def close_chrome():
try:
subprocess.run(['taskkill', '/F', '/IM', 'chrome.exe'], check=True)
print("所有 Chrome 实例已关闭。")
except subprocess.CalledProcessError:
print("没有找到运行中的 Chrome 实例。")
close_chrome()
# 获取当前用户名
# 获取当前工作目录并构建文件夹路径
current_directory = os.getcwd() # 获取当前工作目录
folder_path = os.path.join(current_directory, 'browserPlugin') # 拼接路径
user_name = os.getlogin() # 或者使用 os.environ['USERNAME']
# 设置 Chrome 默认用户数据目录路径
user_data_dir = f'C:\\Users\\{user_name}\\AppData\\Local\\Google\\Chrome\\User Data' # Windows示例
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--start-maximized')
options.add_argument(f'--user-data-dir={user_data_dir}') # 关键:指向默认目录
options.add_argument('--profile-directory=Default') # 使用默认配置文件
driver = webdriver.Chrome(options=options)
driver.get("chrome://extensions/")
# ... [后续操作代码不变,如点击加载扩展按钮等] ...
def get_shadow_element(root, selector):
return driver.execute_script(
"return arguments[0].shadowRoot.querySelector(arguments[1])",
root, selector
)
try:
# ================= 1. 开启开发者模式 =================
host = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.TAG_NAME, 'extensions-manager'))
)
toolbar = get_shadow_element(host, 'extensions-toolbar')
dev_toggle = get_shadow_element(toolbar, '#devMode')
if not dev_toggle.get_attribute('checked'):
dev_toggle.click()
print("开发者模式已开启")
time.sleep(1) # 等待界面更新
# ================= 2. 定位加载按钮 =================
load_button = WebDriverWait(driver, 10).until(
lambda d: get_shadow_element(toolbar, '#loadUnpacked')
)
driver.execute_script("arguments[0].click();", load_button)
print("成功点击加载按钮")
time.sleep(2)
# ================= 3. 处理文件对话框 =================
pyautogui.PAUSE = 0.1
# 切换输入法为英文(假设您在使用 Alt+Shift 切换输入法)
#pyautogui.hotkey('alt', 'shift')
#time.sleep(1) # 稍等以确保输入法切换
# 输入路径
pyautogui.write(folder_path)
time.sleep(1) # 等待输入完成
pyautogui.press('enter') # 确认输入
time.sleep(1) # 等待文件夹加载
# 如果需要,按一次 enter 以确保选择
pyautogui.press('enter')
time.sleep(0.3)
pyautogui.press('tab')
time.sleep(0.3)
# 按空格键确认选择(比回车更可靠)
pyautogui.press('space')
time.sleep(3)
except Exception as e:
print("操作失败:", e)
finally:
driver.quit()
别忘了将对应的chromedriver下下来放到打包的可执行目录下