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

能否通过一次传入多个元素名称,使用find_element_by_name定位正确元素?

能否一次调用多个元素名称定位元素?

不行,你写的最后一行代码elem = driver.find_element_by_name(("contact[Name]")("contact[name]"))本身语法就错了——find_element_by_name只能接受单个字符串参数,没法直接传多个元素名称来匹配。

几种可行的实现方法

1. 用CSS选择器同时匹配多个name属性

CSS选择器支持用逗号分隔多个条件,能匹配任意符合其中一个条件的元素,找到第一个匹配的元素就会返回:

elem = driver.find_element_by_css_selector('[name="contact[Name]"], [name="contact[name]"]')
elem.send_keys("name")

2. 遍历名称列表逐个尝试

把可能的元素名称放进列表,循环逐个查找,找到可用元素就停止,逻辑和你最初的try-except写法一致,但更简洁:

possible_names = ["contact[Name]", "contact[name]"]
for name in possible_names:
    try:
        elem = driver.find_element_by_name(name)
        elem.send_keys("name")
        break
    except:
        continue

3. 用XPATH实现多条件匹配

XPATH的or语法可以同时匹配多个name属性:

elem = driver.find_element_by_xpath('//*[@name="contact[Name]" or @name="contact[name]"]')
elem.send_keys("name")

额外提醒

尽量别用空的except块,最好捕获具体的异常类型(比如NoSuchElementException),避免把其他无关错误也掩盖过去:

from selenium.common.exceptions import NoSuchElementException

possible_names = ["contact[Name]", "contact[name]"]
for name in possible_names:
    try:
        elem = driver.find_element_by_name(name)
        elem.send_keys("name")
        break
    except NoSuchElementException:
        continue

内容的提问来源于stack exchange,提问作者M A Nezam Sagor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:01:01