C#에서 Selenium과 Google Translate를 활용하여 간단한 번역기를 구현한 예제 코드를 소개합니다. 이 코드는 텍스트를 구글 번역기로 보내고 결과를 받아와 화면에 출력하는 방식으로 작동합니다. 실제로 웹을 자동으로 탐색하고, 입력된 텍스트를 번역하는 데 유용하게 사용할 예정이랍니다.
Selenium을 활용한 구글 번역 자동화
Selenium은 웹 애플리케이션을 자동화할 때 매우 유용한 도구입니다. 주로 브라우저 테스트에 활용되지만, 이 코드를 사용하면 텍스트 번역과 같은 작업도 자동으로 처리할 수 있어요.
주요 코드 설명
이 예제에서는 ChromeDriver를 사용하여 Google Translate 사이트에 접속하고, Selenium의 XPath를 이용해 웹 페이지의 번역 입력란과 결과를 찾아 작업을 진행합니다.
C#에서 Selenium을 사용한 번역기 예제 코드
private void TranslateBeomSang()
{
try
{
//(부산울산지방)병무청은 어디에 있을까요...? 수영구에,, 있지요~!!!!!
const int maxTryCntBs = 30;
const string srcPathBs = "//textarea[@class='er8xn']";
const string tgtPathBs = "//span[@class='ryNqvb']";
const string transUrlBs = "https://translate.google.com/?sl=ko&tl=en&op=translate&hl=ko";
int tryCntBs = 0;
double fstWaitBs = 100;
double tryWaitBs = 100;
using (IWebDriver driver = new ChromeDriver())
{
driver.Navigate().GoToUrl(transUrlBs);
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromMilliseconds(fstWaitBs);
driver.FindElements(By.XPath(srcPathBs)).FirstOrDefault().SendKeys(txtSrc.Text);
while (driver.FindElements(By.XPath(tgtPathBs)).Count <= 0)
{
tryCntBs++;
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromMilliseconds(tryWaitBs);
if (tryCntBs >= maxTryCntBs)
{
txtErr.Text = $"{TimeSpan.FromMilliseconds(tryWaitBs * tryCntBs)} 시간 경과로 인한 종료 / 간격 {tryWaitBs}ms, 시도횟수 {tryCntBs}";
return;
}
}
var tgts = driver.FindElements(By.XPath(tgtPathBs));
string translate = string.Empty;
foreach (var tgt in tgts)
{
if (translate != string.Empty)
translate += " ";
translate += tgt.Text;
}
txtTgt.Text = translate;
}
}
catch (Exception ex)
{
throw ex;
}
}
코드 설명
- 구성 요소
ChromeDriver: Chrome 브라우저를 제어하는 Selenium 드라이버입니다. 브라우저 자동화를 위해 필수적입니다.- XPath: 웹 페이지의 특정 요소를 찾아내는 데 사용합니다.
textarea는 번역할 텍스트를 입력하는 필드이고,span은 번역 결과를 출력하는 필드입니다.
- 번역 로직
- Google Translate 웹사이트 접속:
Navigate().GoToUrl()을 통해 구글 번역 사이트로 이동합니다. - 텍스트 입력:
SendKeys()메서드를 사용해 번역할 텍스트를 입력 필드에 전송합니다. - 번역 결과 대기:
While루프에서 결과가 나올 때까지 반복합니다. 최대 시도 횟수를 초과하면 자동으로 종료합니다. - 번역 결과 추출: 번역 결과가 나오는 모든 요소를 추출하여 텍스트로 변환하고, 최종적으로
TextBox에 표시합니다.
- Google Translate 웹사이트 접속:
사용 의도
번역 작업을 수동으로 할 필요 없이, 자동으로 입력하고 번역 결과를 받아볼 수 있어 유용합니다. 특히, 다량의 텍스트를 번역할 때 반복적인 작업을 자동화하여 시간과 노력을 절약할 수 있어요. 이렇게 하면 수동으로 여러 번 번역할 필요 없이 빠르게 결과를 얻을 수 있습니다~
실제로 사용하려면 예외처리를 보완하고, 무한 반복 부분은 점검을 하셔야 해요.
