如何从 Google 表单中查找元素? (按名称、ID、XPATH 等排列的元素)

问题描述 投票:0回答:1
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
url = "https://docs.google.com/forms/d/e/1FAIpQLSdl0XfeoCuPwO4bN7tEzpkKC7vUHa2xfQiw3Tyz8X1RbEyFLA/viewform"
driver.get(url)

def fill_form(firstname, lastname, gender, age):
    inputs = driver.find_element(By.ID, "mG61Hd")
    
    time.sleep(2)
    inputs_array = [
        firstname, lastname, age
    ]
    for i in range(inputs):
        inputs[i].clear()
        inputs[i].send_keys(inputs_array[i])
fill_form("syed", "haider", "male", "22")

我需要使用 Selenium 自动化 google 表单,但我被困在这里了。

我不知道如何通过属性 NAME、ID 和 XPATH 查找元素(显然我需要其中之一)但我不知道它是哪一个。我试过替换几个元素,但没有一个有效。

这是模拟表格的链接, https://docs.google.com/forms/d/e/1FAIpQLSdl0XfeoCuPwO4bN7tEzpkKC7vUHa2xfQiw3Tyz8X1RbEyFLA/viewform

我将在一个项目上工作,但作为测试它是如何工作的,我创建了一个模拟表单并且我被困在从表单中挑选元素。

python-3.x forms selenium-webdriver jupyter-notebook pycharm
1个回答
1
投票
//span[text()='First Name']//following::input[1]

上面的XPath表达式会定位到文本框输入First Name

您可以用同样的方式为其他字段构造 XPath 表达式,例如 Last NameAge

XPath表达式解释:

  • //span
    - 找到所有
    <span>
    节点
  • [text()='First Name']
    - 查找所有包含 First Name
  • 的文本
  • //following::input[1]
    - 找到以下第一个
    <input>
    节点

总而言之,找到紧接在包含文本

First Name
input节点之后的第一个span

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