Selenium Python:获取必填表单真实ID及关联标签的问题
问题解答
1. 为什么返回随机ID而非真实ID?
Greenhouse招聘系统的表单元素会在页面加载完成后动态替换原始id属性,生成一串随机的字母数字字符串。Selenium操作的是最终渲染后的DOM,所以直接调用.id拿到的是更新后的随机ID,而非HTML源码里的first_name。
2. 获取真实ID(原始标识)的方法
不用依赖.id属性,直接获取元素的name属性即可,这个属性不会被动态替换:
# 针对单个必填元素 real_id = required[0].get_attribute('name') # 遍历所有必填元素 for elem in required: real_id = elem.get_attribute('name') print(real_id)
实测这个方法能拿到first_name、last_name这类原始标识。
3. 获取必填字段对应前置标签的最简方式
观察页面DOM结构,每个输入框的前置标签(如"First Name")是它的前一个兄弟元素,可以用XPath直接定位:
for elem in required: # 获取前置标签文本 label_text = elem.find_element_by_xpath('./preceding-sibling::label').text # 结合真实ID一起输出 real_id = elem.get_attribute('name') print(f"{label_text}: {real_id}")
如果遇到结构略有不同的字段,也可以通过父容器定位标签:
parent_div = elem.find_element_by_xpath('./..') label_text = parent_div.find_element_by_tag_name('label').text
内容的提问来源于stack exchange,提问作者John D'Uva
相关产品推荐
相关产品推荐

