📌  相关文章
📜  使用Selenium和Python自动将多个响应填充到 Google 表单中

📅  最后修改于: 2022-05-13 01:54:55.666000             🧑  作者: Mango

使用Selenium和Python自动将多个响应填充到 Google 表单中

先决条件:Selenium

Selenium是一个强大的工具,用于通过程序控制 Web 浏览器并执行浏览器自动化。它适用于所有浏览器,适用于所有主要操作系统,其脚本是用各种语言编写的,例如Python、 Java、C# 等。我们将使用Python。 Selenium教程涵盖了所有主题,例如 - WebDriver、WebElement、使用selenium进行单元测试。

这里的任务是在Python中使用selenium用相同的 Google 表单填写多个响应。下面给出了本示例中使用的 Google 表单的链接:

表格链接——点击这里

谷歌表单

该表格有五个条目:

  • 姓名
  • 电子邮件
  • 地址
  • 电话号码
  • 注释

姓名、电子邮件和电话号码具有相同的类名quantumWizTextinputPaperinputInput和地址和注释具有相同的类名quantumWizTextinputPapertextareaInput。数据采用列表形式。

给定的程序也使用计数,原因是 textboxes 包含一个列表,其类名为“quantumWizTextinputPaperinputInput”,而 textareaboxes 包含一个列表,其类名为“quantumWizTextinputPapertextareaInput”,当添加这两个类时,它会生成一个列表。数据也以列表的形式提供,因此每个数据变量都会增加计数变量。

例子:

方法

为了实现我们所需的功能,需要按照完美的顺序执行给定的步骤:

  • 导入selenium和时间模块
  • 添加 chrome 驱动程序路径和表单 URL
  • 添加一些延迟,直到页面完全加载
  • 以列表形式添加数据
  • 遍历每个数据并填充细节
  • 关闭窗口

程序:

Python3
# Import Module
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
 
# open Chrome
driver = webdriver.Chrome(
    'C:/Users/HP/Desktop/Drivers/chromedriver_win32/chromedriver.exe')
 
# Open URL
driver.get('https://forms.gle/vWVmojtWdfFvEj8V6')
 
# wait for one second, until page gets fully loaded
time.sleep(1)
 
# Data
datas = [
    ['Mary D Joiner', 'MaryDJoiner@gmail.com', '4079025063',
        '2474  McDonald Avenue,Maitland', 'NA'],
    ['Karen B Johnson', 'KarenBJohnson@gmail.com',
        '3153437575', '2143  Oak Street,GRAND ISLE', 'NA'],
]
 
# Iterate through each data
for data in datas:
    # Initialize count is zero
    count = 0
 
    # contain input boxes
    textboxes = driver.find_elements_by_class_name(
        "quantumWizTextinputPaperinputInput")
 
    # contain textareas
    textareaboxes = driver.find_elements_by_class_name(
        "quantumWizTextinputPapertextareaInput")
 
    # Iterate through all input boxes
    for value in textboxes:
        # enter value
        value.send_keys(data[count])
        # increment count value
        count += 1
 
    # Iterate through all textareas
    for value in textareaboxes:
        # enter value
        value.send_keys(data[count])
        # increment count value
        count += 1
 
    # click on submit button
    submit = driver.find_element_by_xpath(
        '//*[@id="mG61Hd"]/div[2]/div/div[3]/div[1]/div/div/span/span')
    submit.click()
 
    # fill another response
    another_response = driver.find_element_by_xpath(
        '/html/body/div[1]/div[2]/div[1]/div/div[4]/a')
    another_response.click()
 
# close the window
driver.close()


输出: