You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用Selenium自动随机选择Google表单单选按钮的XPath问题

解决Selenium操作Google表单单选按钮的问题

原代码的问题点

  1. 定位颜色选项时,错误混用定位方式:用"class name"作为定位策略,却传入了XPath表达式,完全不符合Selenium的定位规则。
  2. 单选按钮不能通过send_keys()选择,必须点击对应的选项元素才能完成选择。
  3. 提交表单后没有回到新的表单页面,循环执行第二次时会找不到输入字段,因为此时页面停留在提交成功的提示页。

修复后的完整代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from faker import Faker
import random
import time

driver = webdriver.Chrome()
driver.get("https://forms.gle/PL3W5TxZVVJHRa1W9")
faker = Faker()

colors = ["Green", "Blue", "Black", "Red"]  # 注意文本要和表单上的完全匹配(大小写一致)

for i in range(20):
    # 生成测试数据
    name = faker.name()
    age = random.randint(18, 99)
    country = faker.country()
    email = faker.email()
    selected_color = random.choice(colors)

    # 填写姓名、年龄、国家、邮箱
    name_field = driver.find_element(By.XPATH, '//*[@id="mG61Hd"]/div[2]/div/div[2]/div[1]/div/div/div[2]/div/div[1]/div/div[1]/input')
    name_field.send_keys(name)
    
    age_field = driver.find_element(By.XPATH, '//*[@id="mG61Hd"]/div[2]/div/div[2]/div[2]/div/div/div[2]/div/div[1]/div/div[1]/input')
    age_field.send_keys(str(age))
    
    country_field = driver.find_element(By.XPATH, '//*[@id="mG61Hd"]/div[2]/div/div[2]/div[3]/div/div/div[2]/div/div[1]/div/div[1]/input')
    country_field.send_keys(country)
    
    email_field = driver.find_element(By.XPATH, '//*[@id="mG61Hd"]/div[2]/div/div[2]/div[4]/div/div/div[2]/div/div[1]/div/div[1]/input')
    email_field.send_keys(email)

    # 随机选择颜色单选按钮
    # 通过选项的aria-label属性定位(表单上的颜色文本要和colors列表里的完全一致)
    color_option = driver.find_element(By.XPATH, f'//div[@aria-label="{selected_color}"]')
    color_option.click()

    # 提交表单
    submit_button = driver.find_element(By.CSS_SELECTOR, "[type='submit']")
    submit_button.click()

    # 等待页面加载,然后点击"提交另一份响应"回到表单页面
    time.sleep(1)
    another_response_btn = driver.find_element(By.XPATH, '//a[contains(text(), "提交另一份响应")]')
    another_response_btn.click()
    time.sleep(1)

driver.quit()

关键修复说明

  1. 单选按钮定位:Google表单的每个单选按钮选项,都会有一个aria-label属性对应选项的文本,直接通过这个属性定位对应的元素并点击即可完成选择。注意要保证colors列表里的文本和表单上显示的完全一致(包括大小写)。
  2. 表单重置:提交成功后,必须点击页面上的"提交另一份响应"按钮,才能回到空白表单继续填写,否则循环后续的元素定位都会失败。
  3. 定位方式规范:统一使用By类来指定定位策略,代码更清晰规范,避免原代码中混用定位方式的错误。

内容的提问来源于stack exchange,提问作者Rishav Pandit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 06:40:21