2017-09-24 10 views
-1

셀레늄과 파이썬 3.6을 사용하여 파이썬 자동 완성 스크립트를 스크립팅하고 있습니다. 최대한 빨리 텍스트 입력란을 채우고 싶습니다. 지금은 다음을 사용합니다 :Python Selenium 한 번에 많은 텍스트 상자를 채우는 방법

driver.execute_script("document.getElementById(--the elements ID--   
-).value='%s'" % ---what I want script to fill the box with---) 

이 입력란은 자동 완성되는 웹 사이트의 입력 텍스트 상자마다 반복합니다. 이것은 간단하지만 각 텍스트 상자를 한 번에 하나씩 채 웁니다. 나는 chrome extension "autofill"과 비슷한 다른 값으로 한번에 모든 입력 상자를 채우고 싶다. 모든 도움을 주셨습니다.

답변

0

1) 당신의 자동 스크립트와 함께 현지에서 자바 스크립트 파일을 준비를 그 안에 함수를 정의하고 모든 필드 당신이 원하는 가치를 포함하는 객체를 수용 설정하려면 함수 본문에서 요소 및 값을 찾습니다.

function autofill(values) { 
document.querySelector("#username").value = values.username; 
document.querySelector("#city").value = values.city; 
... 
} 

2) driver.executeScript()를 사용하여 스크립트 노드를 헤드 노드에 삽입하고 함수를 호출하십시오.

var script = 'var script = document.createElement("script");' + 
'script.src=file:///<script file absolute path>; ' + 
'document.head.appendChild(script);' + 
'autofill(arguments[0])'; 

driver.executeScript(script, fieldsValue); 
+0

매우 도움이됩니다. 저를위한 해결책은 "driver.execute_script ("다음에 ";"가 포함 된 페이지의 각 쿼리 선택기를 작성하는 것입니다. 값을 입력하는 데 방금 % s를 사용했습니다. 코드를 적게 사용하여 코드를 약간 더 빨리 작성한 다음 로컬 js를 작성했습니다. 각 입력을 구분하기 위해 ";"를 사용할 수 있다는 것을 깨닫지 못했습니다. 감사합니다. – Kermit

0

나는 당신을 올바르게 이해하고 있는지 잘 모르겠다.

같은 텍스트의 동일한 ID를 가진 모든 요소를 ​​채우시겠습니까?

당신은 그것을 이런 식으로 수행하려고 할 수 있습니다

:

elements = driver.find_elements_by_id('your id here') 
for element in elements: 
    element.send_keys('---') 
+0

편집을 확인하십시오. 한 번에 다른 값으로 사이트의 모든 입력 텍스트 상자를 채우고 싶습니다. 건배 – Kermit

+0

코드 예를 게시 할 수 있습니까? – mostaszewski