2015-01-19 5 views
4

자바 스크립트 대신 send_keys() 메소드를 사용하여 textarea 값을 설정하려고합니다.Selenium + firefox : 빈 execute_script 인수

설명서에 따르면 web_lement를 매개 변수로 전달하고 arguments 배열을 통해이 매개 변수를 참조 할 수 있어야합니다. 그러나, 나는 arguments가 오브젝트이고, execute_script 인자로 무엇을 넣든 상관 없다는 것을 firefox js 콘솔에서 확인했다. arguments은 항상 빈 객체이다.

>>>> web = webdriver.Firefox() 
>>>> web.get("http://somepage.com") 
>>>> element = web.find_element_by_tag_name("textarea") 
>>>> web.execute_script("return typeof(arguments)", element) 
u'object' 
>>> web.execute_script("return arguments",element) 
[] 

누구나 이와 비슷한 경험이 있습니까? 어떻게 자바 스크립트에 대한 인수로 webElement를 넣을 수 있습니까?

Firefox 35.0을 사용하여 셀레늄 2.44.0.

+0

흥미 롭다. 나는 그것을 재현 할 수 없다. 후자는 '[]'를 출력한다. 어떤 셀렌과 파이어 폭스 버전을 사용하고 있습니까? – alecxe

+0

'''selenium .__ version__ '2.44.0''' Firefox - 35.0 – ASmith78

답변

5

다음은 관련 버그입니다. Firefox 35: Passing arguments to executeScript isn't working.

pip install --upgrade selenium 

올드 답 : 나는 selenium==2.44.0Firefox 35.0를 사용하여 문제를 재현 할 수 있었다

:

오늘 발표 된 selenium 2.45 수정되었습니다

은, 셀레늄 패키지를 업그레이드

>>> element = web.find_element_by_tag_name('textarea') >>> web.execute_script("return arguments",element) [] 
로 다운 그레이드

이 문제를 해결 :

>>> element = web.find_element_by_tag_name('textarea') 
[<selenium.webdriver.remote.webelement.WebElement object at 0x1022d1bd0>] 
3

더 이상로 알려진 백도어의 종류를 통해 35 셀레늄 인수에 통과 할 수 있었다 버전으로, 파이어 폭스에서 전달 된 매개 변수와 자바 스크립트를 실행할 수 없습니다 셀레늄 __exposedProps__. 외부 바인딩 인터페이스 (그리고 Google에서 만든 모든 돈으로 충당되는 일부 복잡한 작업)를 전체적으로 강화하는 과정에서이 인터페이스를 사용 중지하고 제거했습니다. 그들의 의도는 deprecation notice in mid-2014에 기록되어 있습니다. 셀레늄 버그 #8390이이 문제를 다루고 있습니다.하지만 dev 팀을 놀라게해서 잡았습니다. 아직 다른 인터페이스로 마이그레이션하는 작업이 보이지 않습니다. WebIDL으로 추정됩니다.

다른 브라우저에는 영향을 미치지 않지만 Firefox는 Selenium으로 테스트하는 데있어 가장 빠르고 쉬운 방법입니다. 현재 우리 웹 테스트 담당자에게 가장 좋은 방법은 해결 방법이있을 때까지 Firefox 34으로 다운 그레이드하고 자동 업데이트를 끄는 것입니다.

+0

StackOverflow에 오신 것을 환영합니다. 훌륭한 첫 번째 답변! –

+0

셀레늄 2.45.0이 FF 36에서 제대로 작동하는지 확인할 수 있습니다. 불행히도 v34 이후 FF로 변경하면 보드 전체에서 테스트 실행 속도가 크게 느려집니다. [selenium issue # 8551] (https://code.google.com/p/selenium/issues/detail?id=8551) –

관련 문제