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

时间:2017-09-24 12:38:05

标签: python python-3.x selenium bots autofill

我正在使用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"。所有帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

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

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

您可以尝试这样做:

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

答案 1 :(得分: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);