2017-09-24 156 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