通过 Java 调用 ChromeDriver 启动 Chrome 浏览器后,当用户**手动点击按钮**时导致标签页崩溃

发布于:2025-06-29 ⋅ 阅读:(20) ⋅ 点赞:(0)

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.CapabilityType;
import java.util.HashMap;
import java.util.Map;

public class StableChromeLauncher {

    public static void main(String[] args) {
        // 1. 设置 ChromeDriver 路径
        System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
        
        // 2. 创建优化配置
        ChromeOptions options = new ChromeOptions();
        
        // 核心稳定性配置
        options.addArguments("--disable-dev-shm-usage"); // 解决共享内存问题
        options.addArguments("--no-sandbox");            // 禁用沙箱模式
        options.addArguments("--disable-gpu");           // 禁用GPU加速
        
        // 内存优化配置
        options.addArguments("--disable-extensions");
        options.addArguments("--disable-background-timer-throttling");
        options.addArguments("--disable-backgrounding-occluded-windows");
        options.addArguments("--disable-renderer-backgrounding");
        
        // 启用自动崩溃恢复
        options.setCapability(CapabilityType.ENABLE_PROFILING_CAPABILITY, true);
        
        // 3. 实验性功能配置
        Map<String, Object> prefs = new HashMap<>();
        prefs.put("profile.default_content_setting_values.notifications", 2); // 禁用通知
        options.setExperimentalOption("prefs", prefs);
        
        // 4. 内存限制配置(针对手动操作)
        options.addArguments("--renderer-process-limit=1");
        options.addArguments("--single-process"); // 单进程模式
        
        // 5. 启动浏览器
        WebDriver driver = new ChromeDriver(options);
        
        try {
            // 6. 导航到目标页面
            driver.get("https://your-target-page.com");
            
            System.out.println("浏览器已启动,请手动操作页面...");
            System.out.println("重要提示:请等待30秒后再操作页面,让浏览器完成初始化");
            
            // 7. 保持浏览器打开以供手动操作
            Thread.sleep(Long.MAX_VALUE);
            
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        } finally {
            driver.quit();
        }
    }
}


网站公告

今日签到

点亮在社区的每一天
去签到