본문 바로가기
Python/Selenium

selenium.webdriver.execute_async_script로 비동기 스크립트 실행하기

by PySun 2025. 1. 19.
반응형

Selenium의 execute_async_script: 비동기 스크립트 실행하기

자동화 테스트 도구인 Selenium은 웹 애플리케이션과 상호작용하는 데 강력한 기능을 제공합니다. 그 중 execute_async_script 메서드는 비동기 JavaScript 코드를 실행할 수 있는 뛰어난 방법입니다. 이 포스팅에서는 execute_async_script를 이용해 비동기 스크립트를 실행하는 방법과 실용적인 예제를 소개합니다!

execute_async_script 소개

사용자는 웹 페이지 내에서 비동기적으로 동작하는 JavaScript를 실행할 수 있습니다. 이는 특히 AJAX 요청이나 사용자 입력에 따라 동적으로 변하는 웹 페이지를 테스트할 때 유용합니다. execute_async_script는 페이지의 로딩이 완료되기 전에 코드를 실행하고, 특정 JavaScript 코드가 완료될 때까지 기다릴 수 있도록 도와줍니다.

함수 시그니처

driver.execute_async_script(script, *args)

매개변수:

  • script: 실행할 JavaScript 코드입니다.
  • args: JavaScript 코드에 전달할 인수들입니다.

반환 값:

  • 비동기 실행 후 반환된 값을 반환합니다.

사용 예제

비동기 HTTP 요청 예제

다음은 execute_async_script를 사용하여 비동기적으로 HTTP 요청을 수행하는 예제입니다. 이 예제에서는 2초 후에 'done'이라는 메시지를 콘솔에 출력하고, Selenium이 이를 감지할 수 있도록 합니다.

from selenium import webdriver
import time

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

# 웹 페이지 로드
driver.get('https://example.com')

# 비동기 스크립트 실행
script = """
var callback = arguments[arguments.length - 1];
setTimeout(function() {
    console.log('done');
    callback('Asynchronous script executed!');
}, 2000);
"""

# 비동기 스크립트 실행 및 결과 확인
result = driver.execute_async_script(script)

print(result)  # 출력: Asynchronous script executed!

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

비동기 API 요청 예제

웹 페이지에 비동기 API 요청을 보내고 그 결과를 확인하는 예제입니다. 만약 해당 페이지에 실제로 API 요청을 맺고자 하시면, 아래와 같이 수정할 수 있습니다.

from selenium import webdriver
import time

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

# 웹 페이지 로드
driver.get('https://example.com/api-test')

# 비동기 스크립트 실행
script = """
var callback = arguments[arguments.length - 1];
fetch('https://api.example.com/data')
    .then(response => response.json())
    .then(data => {
        console.log(data);
        callback(data);
    })
    .catch(error => callback(error));
"""

# 비동기 API 요청 실행 및 결과 확인
result = driver.execute_async_script(script)

print(result)  # JSON 데이터 또는 오류 메시지 출력

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

결론

execute_async_script를 사용하면 비동기 처리를 훨씬 더 쉽게 할 수 있습니다. 많은 개발자들이 이 기능을 통해 복잡한 비동기 로직을 테스트하고, 사용자 경험을 보다 매끄럽게 만들 수 있습니다. 따라서 웹 애플리케이션의 다양한 상태를 시뮬레이션하고 테스트하는 데 매우 유용합니다!

  • 비동기 JavaScript를 통해 브라우저의 힘을 최대한 활용해 보세요!
  • 지금 바로 execute_async_script를 실험하여 비동기 스크립트의 진가를 경험해 보시기 바랍니다!
반응형