自动加载浏览器插件程序

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下下来放到打包的可执行目录下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值