Selenium WebDriver로 IE11/Edge 파일 다운로드 자동화

문제점 (누를 버튼)



IE11/Edge에서 파일을 다운로드하는 경우 하단에 응답 대화 상자(알림바)가 나오고 [저장]을 눌러야 합니다.

이 대화 상자입니다.



이번에는 Selenium WebDriver에서 이것을 테스트하는 방법을 조사했습니다. 구현 언어는 Java가 됩니다.

버튼을 누르는 코드



브라우저 설정에서 대화 상자를 숨길 수 없기 때문에 "저장"을 누르는 방법을 조사했습니다.

Testing Downloading Files in IE9 via Selenium 의 코드를 참고로 작성했습니다만, IE의 버전이 다르기 때문에 조금 수정할 필요가 있었습니다.

sample.java
import java.awt.AWTException;
import java.awt.Robot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;

//・・・

// ダウンロード処理を行うエレメント(ボタンなど)を検索
WebElement downloadElement = driver.findElement(By.id("download"));

try {
    Robot robot = new Robot();

    // 対象エレメントにフォーカスを移動
    downloadElement.sendKeys("""");

    // Enterキーを押下
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);

    // ダウンロードの通知バー(ダウンロードマネージャ)が出てくるのを待つ
    Thread.sleep(2000);

    // Alt+N を押下して、ダウンロードの通知バー(ダウンロードマネージャ)にフォーカスを移動
    robot.keyPress(KeyEvent.VK_ALT);
    robot.keyPress(KeyEvent.VK_N);
    robot.keyRelease(KeyEvent.VK_N);
    robot.keyRelease(KeyEvent.VK_ALT);

    // Enterキーを押下してダウンロード開始  
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);

    // ダウンロード終了を待つ
    Thread.sleep(2000);

    // Alt+N を押下して、ダウンロードの通知バー(ダウンロードマネージャ)にフォーカスを移動
    robot.keyPress(KeyEvent.VK_ALT);
    robot.keyPress(KeyEvent.VK_N);
    robot.keyRelease(KeyEvent.VK_N);        
    robot.keyRelease(KeyEvent.VK_ALT);

    // タブキーを3回押下して、通知バーの "X" ボタンに遷移する
    robot.keyPress(KeyEvent.VK_TAB);
    robot.keyRelease(KeyEvent.VK_TAB);

    robot.keyPress(KeyEvent.VK_TAB);
    robot.keyRelease(KeyEvent.VK_TAB);

    robot.keyPress(KeyEvent.VK_TAB);
    robot.keyRelease(KeyEvent.VK_TAB);

    // Enterキーを押下して、通知バー(ダウンロードマネージャ)を閉じる
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);
} catch (AWTException e) {
    e.printStackTrace();
}

설명 및 주의사항



코멘트에 쓴 것처럼, 이 코드는 Robot을 사용하여 다운로드에 필요한 키 조작을 수행합니다. 구체적으로는
  • Alt+N을 누릅니다(다운로드 대화 상자에 포커스) → Enter를 누릅니다(저장 버튼 누름) → 다시 Alt+N을 누릅니다(다운로드 후 확인 대화 상자에 포커스) → 탭에서 X(닫기) 버튼으로 이동 → Enter 키를 누릅니다 (대화 상자가 닫힙니다)

  • 라는 조작을 실시하고 있습니다.

    따라서 테스트 실행 중에 활성 창을 변경하면 해당 창에서 키가 조작되어 테스트가 실패합니다 (예 : 다운로드가 성공적으로 실행되었는지 확인하려면 다운로드 폴더를 열고 버리면, 그쪽에서 키 조작되어 버린다). 이 코드를 테스트하는 동안 활성 창을 전환하지 않도록주의해야합니다.

    또, 장래에 브라우저의 사양이 바뀌어, 키 조작이 변경이 되었을 경우는 수정이 필요합니다.
    마지막으로 이번 확인한 브라우저 버전을 기재해 둡니다.

    IE11 버전 정보:


    Edge 버전:

    좋은 웹페이지 즐겨찾기