2012-12-13 1 views
4

, 나는 문제가 발견 : 나는 위의 코드를 실행 한 후executeScript (selenium web driver) 메서드는 나중에 사용할 수 있도록 전역 변수를 정의 할 수 없습니까? 내가 셀레늄 웹 드라이버의 방법 <code>executeScript</code>을 사용하고

js.executeScript("var b='1'; "); 
js.executeScript("alert(b)"); 

, 나는 값을 가진 경고 창이 1입니다 얻을 생각을하지만, 그것은 말한다 :

b is not defined 

제 질문은 : b을 전역 변수로 정의했는데 왜 나중에 가져올 수 없습니까?

답변

7

var b='1' 

같은 변수를 정의 스크립트의 실행에 대한 범위를 제한한다. Selenium은 javascript 스 니펫의 실행을 자체 스크립트로 래핑하여 변수가 스크립트의 끝에서 살아남지 않습니다. 전역으로 변수를 넣어 나중에

alert(window.b); 

다음

window.b = '1'; 

및보십시오.

+0

감사합니다. 또 다른 문제가 있습니다 – Ryan

+0

@ user1849264 새로운 질문을하십시오. 그리고 제발, 제 대답에 만족한다면 받아주세요. – Valentin

+0

고마워, @ 발렌틴. 또 다른 문제가 있는데 console.log 함수를 덮어 쓰고 executeScript()에 넣습니다. 예를 들어 'js.executeScript ("console.log = function (txt) {alert ('ok ');};"); '하지만 실패하고 예외가이 코드에서 발생합니다. 나는 executeScript()에서 함수를 덮어 쓸 수 있다면 그렇게 생각하고있다. – Ryan

관련 문제