나는 내 웹 사이트의 자동화 된 테스트에 Selenium2를 사용하고 있으며 일부 자바 스크립트 코드의 반환 값을 얻고 싶습니다. 내 웹 페이지에 foobar()
Javascript 함수가 있고이를 호출하여 파이썬 코드에 반환 값을 가져 오려면 어떻게해야합니까?Selenium에서 자바 스크립트 코드의 반환 값 받기
79
A
답변
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
방금 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''')
result
URLs
는이 경우에 어레이를 포함 할 것이다.
변수가 javascript에 의해 정의되지 않은 경우 반환 값은 무엇이겠습니까? 예외가 발생했거나 단순히 빈 문자열입니까? – Alex
변수가 정의되지 않은 경우 'None'을 반환합니다. – dbJones
해당 newb에 대한 빠른 참고 사항 'return_value = wd.execute_script ("return {foo :'bar '}")'는 나중에 프로그램에서 사용할 반환 값을 저장합니다 . – ntk4