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

时间:2018-05-23 11:32:45

标签: javascript php python forms autofill

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

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

3 个答案:

答案 0 :(得分:2)

尽管关于该线程的通用建议相当不错,但它的范围很广。我已经解决了这个问题,尽管我发布了一个功能齐全的示例,但尽管“从理论上回答了问题”,但还是被主持人删除了。

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

您将使用selenium打开网页,并检索要填充的相关html元素。如果您不熟悉HTML,建议您通过xPath查找元素。 Xpath finder google chrome插件将使此操作非常容易。

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

我们将使用openpyxl处理我们的Excel工作表。 'load_workbook()'将加载工作簿。然后,我们将使用“工作表= workbook.active”功能从工作簿中访问工作表。

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

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

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

first_name.send_keys(FNAME.value)

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

现在,我们可以从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()

如果您希望看到一个实际的工作示例让我感到随意,那么显然在此处张贴该示例不会对讨论有所帮助。

答案 1 :(得分:0)

您找到的答案一如既往,是正确的。我会试着向你解释一下。

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

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

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

答案 2 :(得分:0)

我建议您使用名为Python的库编写Selenium Webdriver脚本。

实现您的想法很容易。