【问题标题】:Selenium python- how can I fill all input fields at onceSelenium python-如何一次填写所有输入字段
【发布时间】:2016-09-27 17:56:56
【问题描述】:

是否可以一次填写页面上的所有字段而不是一一填写?

我现在有

driver.find_element_by_id('1').send_keys(input1)
driver.find_element_by_id('2').send_keys(input2)
driver.find_element_by_id('3').send_keys(input3)

填写表格需要一点时间。

【问题讨论】:

  • 您是否关心填写表格所需的时间,或使用的代码量
  • 我担心它所花费的时间。无论如何要一次填写所有字段?
  • 我不明白这会花费多少时间。你计时了吗?
  • 所以填写一个包含 5 个输入的表单大约需要 3 秒。不多,但它必须填写 1000 多个加起来的表格。这就是为什么我想把它降低到不到 1 秒。只有让它一次输入所有字段才可能。
  • 做你想做的事情的唯一方法是根本不使用浏览器,而是通过 POST 调用直接与网络服务器通信,为每个命名输入字段提供适当的数据。看看requests python 模块。

标签: python selenium webdriver


【解决方案1】:

你可以在python中构造一个dict来存储id对应的值,然后迭代它来填充对应的数据。

input_mapping = {"1": "input1", "2": "input2", "3": "input3"}

for key, value in input_mapping.items():
    driver.find_element_by_id(key).send_keys(value)

但上述方法不会是顺序的。因为字典本身没有顺序。所以如果订单真的很重要,使用collections.OrderedDict() 会是一个更好的选择

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多