Python/Selenium

selenium.execute_async_script로 비동기 JavaScript 실행하기

PySun 2025. 2. 16. 08:10
반응형

Selenium을 이용한 비동기 JavaScript 실행: execute_async_script

웹 자동화의 세상에 발을 들인 여러분, 이제는 여러분의 스크립트에 생명을 불어넣을 차례입니다! 오늘은 Selenium execute_async_script 메소드를 통해 비동기 JavaScript를 실행하는 방법에 대해 알아보겠습니다. 이 방법을 통해 브라우저에서 비동기 작업을 손쉽게 처리할 수 있습니다.

execute_async_script 메소드 소개

Selenium의 execute_async_script 메소드는 주어진 JavaScript 코드를 비동기적으로 실행할 수 있게 해줍니다. 이 메소드는 요청된 코드가 완료되기를 기다리면서, 웹 페이지의 응답을 더 나은 속도로 관리할 수 있도록 도와줍니다. 이제 더 이상 지루한 동기식 실행에 얽매이지 말고, 비동기적인 편리함을 즐겨보세요!

함수 시그니처

driver.execute_async_script(script, *args)

매개변수:

  • script: 실행할 JavaScript 코드입니다. 코드의 마지막에는 arguments[0]에 값을 할당하여 값을 반환해야 합니다.
  • *args: JavaScript 코드에서 사용할 추가 인자입니다.

반환 값:

  • JavaScript 코드의 실행 결과를 반환합니다.

사용 예제

비동기 JavaScript 실행 예제

다음은 Selenium을 사용하여 비동기 JavaScript를 실행하는 기본 예제입니다.

from selenium import webdriver
import time

# 웹드라이버 초기화
driver = webdriver.Chrome()

# 테스트할 페이지 열기
driver.get("https://example.com")

# 비동기 JavaScript 코드 실행
driver.execute_async_script("""
    var callback = arguments[arguments.length - 1];  // 최종적인 callback 저장
    setTimeout(function() { 
        callback('Hello from Async Script!');
    }, 2000);
""")

# 결과 출력
print("Script executed.")
time.sleep(2)  # 결과가 나오는 것을 기다리기 위해 대기

# 드라이버 종료
driver.quit()

여러 사용자 입력 처리 예제

아래 예제에서는 비동기 JavaScript에서 사용자 입력을 받아 여러 개의 인자를 처리하는 방법을 보여줍니다.

from selenium import webdriver
import time

# 웹드라이버 초기화
driver = webdriver.Chrome()

# 테스트할 페이지 열기
driver.get("https://example.com")

# 사용자 입력을 받아 비동기 JavaScript 실행
name = "Alice"
age = 30
result = driver.execute_async_script("""
    var callback = arguments[arguments.length - 1];  // 최종적인 callback 저장
    setTimeout(function() {
        callback('Name: ' + arguments[0] + ', Age: ' + arguments[1]);
    }, 2000);
""", name, age)

# 결과 출력
print("Script executed:", result)

# 드라이버 종료
driver.quit()

결론

이제 여러분은 Selenium의 execute_async_script 메소드를 통해 비동기 JavaScript를 활용할 준비가 되었습니다! 웹 자동화의 가능성을 더욱 확장하고, 속도와 효율성을 높일 수 있는 이 강력한 도구를 활용해 보세요.

  • 비동기 스크립트로 웹 페이지의 상호작용을 개선해보세요!
  • 지금 바로 execute_async_script 메소드를 사용하여 자동화의 재미를 경험해보세요!
반응형