2016-07-31 1 views
3

을 변경하지 않습니다 PhantomJS와 셀레늄을 파이썬은 execute_script와 셀레늄의 스타일 속성을 수정하지만, 속성의 값은 사용

에 내가이 설정되어 있기 때문에 ''에 입력 태그의 스타일 속성을 설정해야합니다 "display : None"은 Selenium에서 send_keys로 입력 내용을 채우지 못하게합니다.

나는 이것을 달성하기 위해 execute_script를 사용하고 있습니다. execute_script는 실행되지만 스타일 속성은 변경되지 않습니다. PhantomJS가 스타일 속성을 변경하지 않는 이유는 무엇입니까?

내가을 제거 할 스타일 속성을 HTML :

<input type="password" size="10" id="navbar_password" name="vb_login_password" tabindex="102" class="textbox" style="display: none;"> 

파이썬 셀레늄 스크립트 :

스타일 속성의 값이 execute_script에 의해 변경되지 않는 이유는

?

password = driver.find_element_by_name("vb_login_password") 

driver.execute_script("arguments[0]['style'] = arguments[1]", password, '') 

print(password.get_attribute("style")) 

//display:none; 
+0

** 업데이트 ** : 나는 사용자 이름 입력 필드에 다양한 속성을 변경했는데, 그것은 일 때마다,하지만 비밀 번호 입력 필드를 변경할 수 없습니다 ... 나는 그것이 디스플레이와 관련이 있다는 것을 알고 : 없음 속성,하지만 그것을 고칠 수 없다면 그것을 해결하는 방법을 모르겠다. 아마도 dom에서 해당 요소를 삭제 한 다음 해당 스타일 속성없이 복사본을 삽입해야합니까? –

답변

1

은 다음과 시도 -

password = driver.find_element_by_name("vb_login_password") 

password = driver.execute_script("arguments[0].style.display = 'block'; return arguments[0];", password) 

print(password.value_of_css_property("display")) 

#now you can set value using send_keys 
password.send_keys("your value"); 

는 희망이 도움이 ... :)

관련 문제