[javascript] Selenium에서 Javascript 코드의 반환 값 가져 오기

내 웹 사이트의 일부 자동화 테스트에 Selenium2를 사용하고 있으며 일부 Javascript 코드의 반환 값을 얻고 싶습니다. 나는이 있다면 foobar()내 웹 페이지에서 자바 스크립트 기능을 내가 그 전화를 내 파이썬 코드로 반환 값을 얻으려면, 나는 그것을 무엇을 호출 할 수 있습니다?



답변

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

>>> 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'


답변

아래 예제 코드와 같이 코드를 함수로 작성하지 않은 경우에도 return var;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이 경우 배열이 포함됩니다 .


답변