首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Selenium WebDriver 瀏覽器操作實戰:視窗控制、截圖、滑鼠模擬與進程管理

     編輯:Java 相關知識

1. 瀏覽器視窗與導航控制

public void browserControl(WebDriver driver) throws InterruptedException {
    driver.get("https://www.example.com");
    Thread.sleep(2000);
    
    // 視窗最大化
    driver.manage().window().maximize();
    
    // 導航操作
    driver.navigate().to("https://www.google.com");
    driver.navigate().refresh();   // 重新整理
    driver.navigate().back();      // 返回
    driver.navigate().forward();   // 前進
    
    // 關閉瀏覽器 (釋放所有資源)
    driver.quit();
}

2. 截圖功能

public void takeScreenshot(WebDriver driver) throws IOException {
    driver.get("https://www.google.com");
    
    // 強制轉型為 TakesScreenshot 介面
    File srcFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
    
    // 複製到目標路徑
    File destFile = new File("screenshots/google_" + System.currentTimeMillis() + ".png");
    FileUtils.copyFile(srcFile, destFile); // 需 commons-io 依賴
}

3. 滑鼠右鍵模擬

public void rightClick(WebDriver driver) {
    driver.get("https://www.google.com");
    
    Actions actions = new Actions(driver);
    WebElement searchBox = driver.findElement(By.name("q"));
    
    // 右鍵點擊搜尋框
    actions.contextClick(searchBox).perform();
    
    // 其他常用滑鼠操作
    // actions.doubleClick(element).perform();      // 雙擊
    // actions.clickAndHold(element).perform();     // 按住不放
    // actions.moveToElement(element).perform();    // 滑鼠移至元素
    // actions.dragAndDrop(source, target).perform(); // 拖曳
}

4. 強制終止瀏覽器進程 (最後手段)

public void killBrowserProcesses() {
    // 透過作業系統指令終止殘留進程
    // Windows
    Runtime.getRuntime().exec("taskkill /F /IM chromedriver.exe");
    Runtime.getRuntime().exec("taskkill /F /IM chrome.exe");
    Runtime.getRuntime().exec("taskkill /F /IM geckodriver.exe");
    Runtime.getRuntime().exec("taskkill /F /IM firefox.exe");
    
    // Linux/Mac
    // Runtime.getRuntime().exec("pkill -9 chromedriver");
    // Runtime.getRuntime().exec("pkill -9 chrome");
}

進階:WebDriverManager 整合優雅關閉

現代專案建議使用 WebDriverManager 配合 `try-with-resources` 或 JUnit `@AfterEach` 確保資源釋放:

@AfterEach
void tearDown(WebDriver driver) {
    if (driver != null) {
        driver.quit(); // 正常關閉,包含驅動程式進程
    }
}

最佳實務總結

操作推薦方法注意事項
視窗最大化`driver.manage().window().maximize()`測試開始前執行,避免元素不可見
截圖`TakesScreenshot` + `FileUtils.copyFile`失敗時自動截圖整合至測試報告
滑鼠/鍵盤模擬`Actions` 類別複雜操作鏈用 `build().perform()`
關閉瀏覽器`driver.quit()`**絕不使用 `close()`** (僅關閉當前分頁)
殘留進程清理CI/CD 階段執行 `pkill/taskkill`最後防線,正常情況 `quit()` 即可
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved