2011-04-07 14 views
79

나는 내 웹 사이트의 자동화 된 테스트에 Selenium2를 사용하고 있으며 일부 자바 스크립트 코드의 반환 값을 얻고 싶습니다. 내 웹 페이지에 foobar() Javascript 함수가 있고이를 호출하여 파이썬 코드에 반환 값을 가져 오려면 어떻게해야합니까?Selenium에서 자바 스크립트 코드의 반환 값 받기

답변

132

값을 반환하려면 execute_script() 메서드에 전달 된 문자열에 return JavaScript 키워드를 사용하십시오.

>>> from selenium import webdriver 
>>> wd = webdriver.Firefox() 
>>> wd.get("http://localhost/foo/bar") 
>>> wd.execute_script("return 5") 
5 
>>> wd.execute_script("return true") 
True 
>>> wd.execute_script("return {foo: 'bar'}") 
{u'foo': u'bar'} 
>>> wd.execute_script("return foobar()") 
u'eli' 
+0

변수가 javascript에 의해 정의되지 않은 경우 반환 값은 무엇이겠습니까? 예외가 발생했거나 단순히 빈 문자열입니까? – Alex

+0

변수가 정의되지 않은 경우 'None'을 반환합니다. – dbJones

+3

해당 newb에 대한 빠른 참고 사항 'return_value = wd.execute_script ("return {foo :'bar '}")'는 나중에 프로그램에서 사용할 반환 값을 저장합니다 . – ntk4

0

방금 ​​var에 반환 할 변수 끝에 return var;을 추가하여, 아래의 예제 코드에서와 같이 함수로 작성된 코드의 당신의 잘린이없는 경우에도 당신은 값을 반환 할 수 있습니다.

result = driver.execute_script('''cells = document.querySelectorAll('a'); 
URLs = [] 
console.log(cells); 
[].forEach.call(cells, function (el) { 
    if(el.text.indexOf("download") !== -1){ 
    //el.click(); 
    console.log(el.href) 
    //window.open(el.href, '_blank'); 
    URLs.push(el.href) 
    } 
}); 
return URLs''') 

resultURLs는이 경우에 어레이를 포함 할 것이다.

관련 문제