Selenium Python 如何定位Web表单最后一个文本输入框并写入内容
解决方案
你可以通过XPath的属性前缀匹配+last()函数直接定位目标元素,无需硬编码属性后缀:
通用代码(Selenium 4.0+ 推荐写法)
from selenium.webdriver.common.by import By # 直接匹配所有name以address开头的文本输入框,取最后一个 driver.find_element(By.XPATH, '//input[starts-with(@name, "address") and @type="text"][last()]').send_keys(username)
旧版Selenium兼容写法
driver.find_element_by_xpath('//input[starts-with(@name, "address") and @type="text"][last()]').send_keys(username)
逻辑说明
starts-with(@name, "address")自动匹配所有前缀为address的输入框,适配动态变化的数字后缀- 增加
@type="text"过滤条件,排除同前缀的隐藏域、单选/复选框等非目标输入元素 [last()]自动取匹配结果中的最后一个元素,不需要手动更新属性值
抗干扰优化(可选)
如果页面内表单外也存在前缀为address的输入框,可以先定位到表单节点缩小匹配范围:
from selenium.webdriver.common.by import By # 替换为你实际的表单定位规则,此处以id="myForm"为例 form_ele = driver.find_element(By.ID, "myForm") # 仅在表单范围内匹配目标元素 form_ele.find_element(By.XPATH, './/input[starts-with(@name, "address") and @type="text"][last()]').send_keys(username)
内容的提问来源于stack exchange,提问作者jessefournier
相关产品推荐
相关产品推荐

