티스토리 뷰

Selenium 비동기 데이터 받아오기

상황

셀리니움을 사용하다가 보면 비동기 데이터를 받아오고 싶을 때가 있다. 그럴 때 사용하는 방법입니다.

driver = webdriver.Firefox()

...

result = dirver.execute_async_script("""
var done = arguments[0];
require(["foo"], function (foo) {
    done(foo.computeSomething());
});
""")

위의 소스대로 작성해서 받아오면됩니다.

execute_async_script 함수는 자바스크립트를 실행할 도록 할 때 해당 스크립트를 함수로 묶어서 보내주는듯 합니다. 어쨋든, javascriptargument 변수를 사용해 콜 바이 레퍼런스 처럼 비동기 값을 받아서 넘겨주면, execute_async_script 가 받아와서 값을 리턴해주는거 같습니다.

자세한 내용은 스택오버플로를 참조하면됩니다.