2017-09-24 36 views
-1

我正在使用selenium和python 3.6腳本化一個python自動填充腳本。我想盡快填寫文本輸入框。現在我使用:Python Selenium如何一次填充多個文本框

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

我重複這個代碼行的每個網站的輸入文本框被自動填充。這很快,但它一次填充每個文本框。我想用不同的值填充所有的輸入框,類似於擴展名「自動填充」。所有幫助讚賞。

回答

0

1)在當地與你的汽車腳本一起準備一個JavaScript文件,它定義一個函數,並接受一個對象,其中包括所有字段的值要在函數體中設置查找元素和設置值。

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