[컴][웹] Selenium 에서 File Dialog 처리방법




Selenium 에서 File Dialog 처리방법(windows)

Selenium 이 OS 의 dialog 을 control 할 수는 없다고 한다. 그래서 결국 다른 방법을 찾아야 한다. 결과적으로 windows 를 control 할 수 있는 module 이나 tools 들을 이용하면 된다.

  1. <input> tag 에 직접 값을 넣어주기 : 이방법은 어렵지 않다. 그리고 이것은 아예 file dialog 를 띄우지 않은 상태에서 처리하는 것이기 때문에 windows 이외의 곳에서도 사용할 수 있다. 그러나 문제는 이렇게 <input> tag 로 되어 있지 않은 page 에서 사용을 할 수 없다.
  2. AutoIt 를 이용해서 control 하기ref. 4 에 자세히 나와 있다. 이녀석이 windows 에서는 가장 괜찮은 방법이다. selenium 으로 불가능한 부분을 AutoIt 을 통해 실행파일로 만들고, 코딩을 할 때 selenium 으로 file upload 버튼까지 누르게 하고, file dialog 부분은 AutoIt 로 처리하도록 AutoIt 을 호출하고, 그 이후에 다시 selenium 을 이용하면 된다.
    그런데 이방법도 문제가 있는데, file 이름등을 script 안에 적어놓기 때문에 다양한 file 이름을 선택해야 할 때는 문제가 있다. 굳이 하려고 한다면, script 를 python 으로 dynamic 하게 작성하고, script 를 실행하게 할 수도 있다.
  3. PyAutoGui (Java 라면 Robot)이용하기 : pyautogui 에서는 type 을 할 때 window handle 을 따로 지정해 줄 수가 없다. 그래서 만약 그 시점에 active window가 바뀌어 버리면 문제가 된다. 그래서 AutoIt 이 낫다.(참고로, Robot 은 사용해 보지 않아서 모르겠다.)
  4. pywinauto : pywinauto 가 나은듯 하다. 이녀석으로 아래처럼 사용해서 file dialog 를 처리할 수 있다.

    filepath = "c:\\a\\file\\파일.mpeg"
           
    app = pywinauto.Application().connect(path=ffPath)
    dlg = app.window(title_re="파일 보내기", class_name="#32770")
    dlg.Edit1.SetEditText(filepath)
    dlg.Button1.click()








Reference

  1. Uploading a file with Selenium Webdriver | Selenium Easy
  2. Use of Robot Class In Selenium WebDriver For Automation Purpose - Software Testing Frequently Asked Interview Questions
  3. GitHub - asweigart/pyautogui: A cross-platform GUI automation Python module for human beings. Used to programmatically control the mouse & keyboard.
  4. How to use AutoIT with Selenium

댓글 없음:

댓글 쓰기