Python Selenium 如何一次填写多个文本框

Python Selenium how to fill in many text boxes at once

我正在使用 selenium 和 python 3.6 编写 python 自动填充脚本。我想尽快填写文本输入框。现在我使用:

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

我为要自动填充的网站的每个输入文本框重复这行代码。这很快,但是它一次填充每个文本框。我想用类似于 chrome 扩展 "autofill" 的不同值一次填充所有输入框。感谢所有帮助。

我不确定我是否理解正确。

是否要用相同的文本填充具有相同 ID 的所有元素?

您可以尝试这样做:

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

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);