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

如何在Selenium与Python中通过type定位HTML元素

解决Selenium通过HTML type属性定位input元素的问题

首先,你遇到的NoSuchElementException原因很明确:find_element_by_partial_link_text这个定位方法只适用于定位<a>标签的链接文本,而你的目标元素是<input>标签,完全不匹配,所以找不到元素是必然的。

要通过type属性定位这两个input元素,有几种可靠的方法,下面逐一说明并给出完整的修正代码:

方法1:使用XPath定位

XPath可以直接通过元素的属性进行定位,针对你的场景:

  • 定位type为file的input://input[@type='file']
  • 定位type为submit的input://input[@type='submit'](HTML属性不区分大小写,XPath默认区分,也可以用小写submit匹配)

方法2:使用CSS选择器定位

CSS选择器语法更简洁,也是常用的定位方式:

  • 定位type为file的input:input[type='file']
  • 定位type为submit的input:input[type='submit']

修正后的完整代码

下面是结合规范定位方式的完整代码,同时修正了你上传文件的错误(send_keys需要传入本地文件的完整路径,而不是"test"):

from selenium import webdriver
from selenium.webdriver.common.by import By  # 引入By类,更规范的定位方式

# 创建Chrome会话
driver = webdriver.Chrome()
driver.maximize_window()

# 加载目标页面
driver.get("<<MY PAGE TO LOAD>>")
driver.implicitly_wait(5)

# 定位file输入框并上传文件(用XPath示例)
upload_field = driver.find_element(By.XPATH, "//input[@type='file']")
# 替换成你本地测试文件的完整路径,比如C:/Users/TEST/Desktop/test.txt
upload_field.send_keys("C:/Users/TEST/Desktop/test.txt")

# 定位submit按钮并点击
submit_btn = driver.find_element(By.XPATH, "//input[@type='submit']")
submit_btn.click()

# 也可以用CSS选择器的写法:
# upload_field = driver.find_element(By.CSS_SELECTOR, "input[type='file']")
# submit_btn = driver.find_element(By.CSS_SELECTOR, "input[type='submit']")

# 最后关闭浏览器会话
driver.quit()

额外注意事项

  • 你的Selenium版本是3.8.1,既支持旧的find_element_by_*方法,也推荐使用find_element(By.XXX, "selector")的方式,后者更符合后续版本的规范。
  • 上传文件时,send_keys不需要手动点击输入框,直接传入文件完整路径即可,Selenium会自动处理文件上传逻辑。
  • 如果页面存在多个同type的input元素,可以结合其他属性(比如name)精准定位,例如//input[@name='filePath' and @type='file'],避免定位错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:39:38