编写自动填写并提交Web表单程序

问题描述 投票:0回答:3

我正在尝试编写一个程序,可以在特定的时间段内自动填写并提交表单。

但我不知道如何以及从哪里开始。我在谷歌搜索这个,但只产生非常一般的答案,如使用JavaScript,python。谁能告诉我应该先学习哪种语言?

javascript php python forms autofill
3个回答
2
投票

尽管这个线程的通用建议相当不错,但它相当广泛。我自己已经解决了这个问题,尽管事实上我发布了一个功能齐全的例子,但它被主持人删除了,尽管“理论上回答了问题”。

因此,对于任何希望解决此问题的人,您将需要执行以下操作:使用Selenium和openpyxl,这两个模块相对简单,将完美地执行此任务。

您将使用selenium打开您的网页,并检索您希望填充的相关html元素。如果您不熟悉HTML,我建议您通过xPath查找元素。 Xpath查找器谷歌chrome插件将使这很容易做到。

driver.get()和driver.find_element_by_xpath()将是您需要的功能。

我们将使用openpyxl来处理我们的Excel工作表。 'load_workbook()'将加载一个工作簿。然后,我们将使用'sheet = workbook.active'函数从工作簿中访问工作表。

我们现在可以打开我们的网站并选择一个Excel工作表。

现在我们需要将单元格值分配给变量,以便我们可以填充HTML表单。我们为工作簿中的每个COLUMN分配一个变量。因此,如果列A包含first_names,我们可以通过编写'FNAME = sheet ['A']来为变量赋值。现在我们有了一种在列中引用单元格的方法,我们可以开始将数据输入到HTML表单中。

我们使用Selenium中的.send_keys()函数填充表单。

first_name.send_keys(FNAME.value)

.value确保显示正确的值,因为有时selenium会打印单元格函数而不是值,我们不希望这种情况发生。

现在我们可以从Excel工作表中将值打印到HTML表单中,我们需要遍历每一行。我们使用简单的while循环执行此操作:

i = 1
x = 1
while x <= 50:
  first_name.send_keys(FNAME[i].value)
  i+=1
  x+=1
driver.quit

一旦循环发生50次,驱动程序将退出,关闭浏览器并停止脚本。

在尝试自动执行此操作时,您可能会发现其他一些错误信息:

driver.back()

time.sleep()

如果您希望看到一个实际的工作示例随意PM我,因为显然在这里发布它不会有助于讨论。


0
投票

你找到的答案一般都是正确的。我会试着向你解释一下。

当您尝试自动化某些活动时,您必须基本上使用script language

  1. 获取东西引用(比如获取索引,表单/字段ID等)
  2. 插入/更改内容(例如填写字段,跟随字段引用)
  3. 保存内容(准备一个文件,带有字段引用及其内容,可以注入特定系统或网站)

脚本语言的一个例子是Python

所以你已经有了自己的脚本。现在你需要在页面上注入它。可以为你做的编程语言是Javascript, or JS。它允许您与网页交谈,获取数据/参考或POST数据。


0
投票

我建议你用一个名为Python的库来编写一个Selenium Webdriver脚本。

实现您的想法很容易。

© www.soinside.com 2019 - 2024. All rights reserved.