반응형

윈도우 탐색기의 파일 목록을 가져오는 방법

 

먼저 해당 경로의 첫번째 파일 xpath를 UIRecorder를 통해 확보한다.

xpath를 보면 파일명 이전에

 

/ListItem[@ClassName=\"UIItem\"]

 

이 요소를 볼 수 있다. UIItem 이 목록을 담고 있는 요소라고 직감적으로 판단할 수 있다.

 

그렇다면 해당 목록을 Name을 모두 가져올 수 있을 것이다.

 

java 코드

 

public class Modules extends Setup{
    public static WindowsDriver<?> winapp = null;
    
    public Modules(WindowsDriver<?> driver) throws Exception {
    	winapp = driver;
    }
    
    
    public void 개인폴더(String folder_name) {
    	
    	ArrayList<String> list = new ArrayList<String>();
		//해당 경로의 목록 xpath 
    	String folder_listview = "/Pane[@ClassName=\"#32769\"][@Name=\"데스크톱 1\"]"
    			+ "/Window[@ClassName=\"CabinetWClass\"][@Name=\"MYBOX\"]"
    			+ "/Pane[@ClassName=\"ShellTabWindowClass\"][@Name=\"MYBOX\"]"
    			+ "/Pane[@ClassName=\"DUIViewWndClassName\"]"
    			+ "/Pane[@Name=\"셸 폴더 보기\"][@AutomationId=\"listview\"]"
    			+ "/List[@ClassName=\"UIItemsView\"][@Name=\"항목 보기\"]"
    			+ "/ListItem[@ClassName=\"UIItem\"]";

		
    	//목록 파일 명 불러오기
		List<WebElement> list_elements = (List<WebElement>) winapp.findElementsByXPath(folder_listview);

		System.out.println("size"+size);
		for (WebElement e : list_elements) {
			list.add(e.getText());
			System.out.println(e.getText());
		}
		System.out.println("------------------\n");
		System.out.println("list 21번째 파일명" +list.get(21));

    	 
    }

▼상속받은 setup.java 코드 보기

더보기
import java.net.URL;
import java.util.concurrent.TimeUnit;

import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.remote.DesiredCapabilities;


import io.appium.java_client.windows.WindowsDriver;
import io.appium.java_client.windows.WindowsElement;

/**
 * Hello world!
 *
 */
public class Setup 
{
    public static WindowsDriver ExplorerSession = null;
    public static WindowsDriver<WindowsElement> WindowSession = null;
    public static WebElement Result = null;
    public static ChromeDriver Chrome = null;
    public static Modules modules;
    public static Actions actions ;
    public static Session session;
    
	@BeforeClass
	public static void setup() {
		try {
			DesiredCapabilities appCapabilities = new DesiredCapabilities();
			appCapabilities.setCapability("platformName", "Windows");
			appCapabilities.setCapability("deviceName", "WindowsPC");
			
			
			//switch to desktop/root Session
			appCapabilities.setCapability("app", "Root");
			WindowSession = new WindowsDriver<WindowsElement>(new URL("http://127.0.0.1:4723"), appCapabilities);
			WindowSession.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
			
			
			//기존코드
			Assert.assertNull(session);
			actions = new Actions(WindowSession);
			modules = new Modules(WindowSession);
			session = new Session(WindowSession);	
			String currentWindowHandle = WindowSession.getWindowHandle();

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
		}
	}
	   

	    @AfterClass
	    public static void TearDown()
	    {
	    	Result = null;
	        if (WindowSession != null) {
	        	WindowSession.quit();
	        }
	        WindowSession = null;
	    }
}

 

실행 결과

 

목록의 모든 파일명을 가져와 보여주고 있는 모습이다.

반응형

+ Recent posts