使用Selenium和Python自动将多个响应填充到 Google 表单中
先决条件:Selenium
Selenium是一个强大的工具,用于通过程序控制 Web 浏览器并执行浏览器自动化。它适用于所有浏览器,适用于所有主要操作系统,其脚本是用各种语言编写的,例如Python、 Java、C# 等。我们将使用Python。 Selenium教程涵盖了所有主题,例如 - WebDriver、WebElement、使用selenium进行单元测试。
这里的任务是在Python中使用selenium用相同的 Google 表单填写多个响应。下面给出了本示例中使用的 Google 表单的链接:
表格链接——点击这里
该表格有五个条目:
- 姓名
- 电子邮件
- 地址
- 电话号码
- 注释
姓名、电子邮件和电话号码具有相同的类名quantumWizTextinputPaperinputInput和地址和注释具有相同的类名quantumWizTextinputPapertextareaInput。数据采用列表形式。
给定的程序也使用计数,原因是 textboxes 包含一个列表,其类名为“quantumWizTextinputPaperinputInput”,而 textareaboxes 包含一个列表,其类名为“quantumWizTextinputPapertextareaInput”,当添加这两个类时,它会生成一个列表。数据也以列表的形式提供,因此每个数据变量都会增加计数变量。
例子:
# values of data
[name, email, phone number, address, comments]
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’],
]
方法
为了实现我们所需的功能,需要按照完美的顺序执行给定的步骤:
- 导入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()
输出: