在selenium/python中提取所需表单的元素ID

cwdobuhd  于 2022-12-13  发布在  Python
关注(0)|答案(3)|浏览(234)

我在Python中使用Selenium抓取此页面(https://boards.greenhouse.io/reddit/jobs/4330383),并使用以下代码循环遍历所有必填字段:
required = driver.find_elements_by_css_selector("[aria-required=true]") .
问题是我无法查看每个元素的id。命令required[0].id(与driver.find_element_by_id("first_name").id相同)返回了一个由字母数字字符和连字符组成的长字符串--尽管id在HTML中是first_name。有人能解释一下为什么idfirst_name改为这个字符串吗?如何查看所需的实际id
另外,在HTML中引用前面提到的关联标签(例如,本例中的“First Name“)的最简单方法是什么?目标是循环遍历required列表,并能够判断这些表单中的每一个表单实际上向用户请求的内容。
提前感谢!任何建议或替代方案都是受欢迎的。

vhmi4jdf

vhmi4jdf1#

你的代码已经很好了,你所需要做的就是使用.get_attribute()方法获取你的id:

required = driver.find_elements_by_css_selector("[aria-required=true]")
for r in required:
    print(r.get_attribute("id"))
dsf9zpds

dsf9zpds2#

driver.find_element_by_id("first_name")返回Web元素对象。
要获取web元素属性值(如hrefid),应对web元素对象应用get_attribute()方法。
因此,您需要将代码更改为

driver.find_element_by_id("first_name").get_attribute("id")

这将为您提供该元素的id属性值

cedebl8k

cedebl8k3#

我将回答我的第二个问题(“如何引用元素的关联标签?"),因为我刚刚使用find_element_by_xpath()方法结合前面的答案中提到的.get_attribute("id")解决方案解决了这个问题:

ele_id = driver.find_element_by_id("first_name").get_attribute("id")
label_text = driver.find_element_by_xpath('//label[@for="{}"]'.format(ele_id)).text

相关问题