카테고리 없음

자바 셀레니움을 활용한 병음 출력 프로그램

이륙 2021. 11. 4. 19:58

 최근 중국어 공부를 위해 컴퓨터로 간단한 문서 작성 중 병음을 써야할 일이 생겼다. 컴퓨터의 내장 입력기를 활용한 병음 입력은 너무 비효율적이고 귀찮아서 셀레니움을 활용해 파파고에서 병음을 가져와 붙여넣는 방법을 통해 일을 간단히 만드려했다.

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class pinyin {
 
	private WebDriver driver;
	private WebElement element;
	private String url;
	
	public static String WEB_DRIVER_ID = "webdriver.chrome.driver";
	public static String WEB_DRIVER_PATH = "/Users/Kar/Downloads/chromedriver";
	
	public pinyin (){
		System.setProperty(WEB_DRIVER_ID, WEB_DRIVER_PATH);
				
		ChromeOptions options = new ChromeOptions();
		options.addArguments("--start-maximized");
		options.addArguments("--disable-popup-blocking");
		options.addArguments("--headless"); 
		options.addArguments("--no-sandbox");

		driver = new ChromeDriver(options);

		Scanner sc = new Scanner(System.in);
		System.out.println("번역할 문장을 입력하여 주십시오.");
		String str = sc.nextLine();
		url = "https://papago.naver.com/?sk=auto&tk=ko&st="+str;
	}
	
	public void activateBot() {
		try { 
            driver.get(url);

            Thread.sleep(5000);
            
            element = driver.findElement(By.xpath("//*[@id=\"btn-toolbar-source\"]/span[3]/span/span/button"));
			element.click();

            Thread.sleep(5000);
            WebElement el2 = driver.findElement(By.className("pinyin_text___24doI"));
    		List<WebElement> el3 = el2.findElements(By.tagName("rt"));
    		
    		for (int i = 0; i < el3.size(); i++) {
    			System.out.print(el3.get(i).getText());
    		}
       }
		catch (Exception e) {
			e.printStackTrace();
		} finally {
			driver.close();
			System.out.println();
			pinyin bot1 = new pinyin();
			bot1.activateBot();
		}
	}
	
	public static void main(String[] args) {
		pinyin bot1 = new pinyin();
		bot1.activateBot();
	}
}

 코드 전체이다.

결과

 일의 효율을 높히기 위해서 한 문장의 병음 출력이 마친 후 다시 프로그램을 호출해 계속 병음을 가져올 수 있게 하였다.