Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

Selenium에서 JavaScript 코드의 반환 값 가져오는 방법

Selenium WebDriver를 활용하면 브라우저 내에서 실행되는 JavaScript 코드의 반환 값을 손쉽게 가져올 수 있습니다. Selenium은 executeScript 메서드를 통해 JavaScript 명령을 실행할 수 있으며, 실행하고자 하는 JavaScript 코드는 이 메서드의 인자로 전달됩니다.

JavaScript 코드에서 값을 반환하려면 return 키워드를 사용해야 합니다. 아울러 JavaScript 관련 기능을 사용하기 위해서는 import org.openqa.selenium.JavascriptExecutor 문장을 반드시 추가해야 합니다.

문법(Syntax)

JavascriptExecutor j = (JavascriptExecutor) driver;
j.executeScript("return document.getElementsByName('txtSearchText')[0].value")

위 문법을 응용하여 입력 상자(edit box)에 입력된 값을 가져오는 예제를 살펴보겠습니다. 정상적으로 실행되면 콘솔에 Selenium이라는 값이 출력되어야 합니다.

Selenium에서 JavaScript 코드의 반환 값 가져오는 방법

예제(Example)

코드 구현

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.JavascriptExecutor;
public class JavascriptValue{
   public static void main(String[] args) {
      System.setProperty("webdriver.chrome.driver", "C:\\Users\\ghs6kor\\Desktop\\Java\\chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      String url = "https://www.tutorialspoint.com/tutor_connect/index.php";
      driver.get(url);
      driver.manage().timeouts().implicitlyWait(12, TimeUnit.SECONDS);
      // 요소를 식별하고 텍스트 입력
      WebElement t=driver.findElement(By.id("txtSearchText"));
      t.sendKeys("Selenium");
      // JavaScript 실행기를 사용하여 값 반환
      JavascriptExecutor j = (JavascriptExecutor) driver;
      String s = (String) j.executeScript("return document.getElementsByName('txtSearchText')[0].value");
      System.out.print("Value is: " +s);
      driver.quit();
   }
}

코드 설명

먼저 ChromeDriver 객체를 생성한 후 지정된 URL로 접속합니다. 이후 By.id()를 통해 검색 입력 상자를 식별하고 sendKeys() 메서드로 "Selenium"이라는 텍스트를 입력합니다. 그다음 WebDriver 객체를 JavascriptExecutor 타입으로 형 변환한 뒤, executeScript() 메서드에 return 키워드가 포함된 JavaScript 코드를 전달하여 입력 상자의 값을 반환받습니다. 마지막으로 driver.quit()을 호출하여 브라우저 세션을 종료합니다.

출력(Output)

코드를 실행하면 콘솔에 다음과 같이 입력 상자의 값이 출력되는 것을 확인할 수 있습니다.

Selenium에서 JavaScript 코드의 반환 값 가져오는 방법