【问题标题】:Python Selenium how to fill in many text boxes at oncePython Selenium如何一次填写多个文本框
【发布时间】:2018-03-05 12:46:45
【问题描述】:

我正在使用 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 扩展“自动填充”的不同值填充所有输入框。感谢所有帮助。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 非常非常有帮助。对我来说,解决方案是编写“driver.execute_script(”,然后在页面的每个查询选择器之间写一个“;”。至于输入值,我只使用了 %s。用更少的代码让它稍微快一点,然后创建一个本地 js函数。我没有意识到你可以使用“;”来分隔每个输入。谢谢
    【解决方案2】:

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

    你想用相同的文本填充所有具有相同 ID 的元素吗?

    您可以尝试这样做:

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

    【讨论】:

    • 请检查编辑。我想一次用不同的值填充网站的所有输入文本框。干杯
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    相关资源
    最近更新 更多