当我打印id时,它与“inspect element”中的id不匹配

2024-05-20 17:59:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含以下内容的网页:

<span class="plugin_pagetree_children_span plugin_pagetree_current" id="childrenspan173273808-0"> <a href="/display/Cardians/Shift+Turnover?src=contextnavpagetreemode">Shift Turnover</a> </span>

我可以通过使用st = driver.find_element_by_link_text('Shift Turnover')链接文本成功地找到它

但是当我用print('-',st.id)打印id时

id打印为63cd644e-495b-4985-8f9e-7ea067a2b6f1,而不是childrenspan173273808-0。你知道吗

我也尝试过get_attributeget_property但是这些都不起作用。欢迎任何提示/提示/建议。你知道吗

提前谢谢。你知道吗


Tags: id网页getshiftdisplaycurrentpluginclass
2条回答

我在这里看到的问题是,您正在尝试获取ID childrenspan173273808-0,但是您的选择器driver.find_element_by_link_text('Shift Turnover')正在定位没有ID的a元素。这就是get_attribute不适合您的原因。实际上,您希望找到包含所需ID的span元素

您可以使用它来获取ID childrenspan173273808-0

st = driver.find_element_by_xpath("//span[a[text()='Shift Turnover']]") # locate the span
id = st.get_attribute("id") # get its ID and print
print(id)

这个XPath定位出现在带有文本Shift Turnovera元素之外的span元素。我们查询包含a元素和Shift Turnover文本的span,然后调用span元素上的get_attribute,以检索所需的childrenspan173273808-0ID

最后,在您的示例中打印出来的ID 63cd644e-495b-4985-8f9e-7ea067a2b6f1不是WebElementID属性,而是“the server-assigned opaque ID for the underlying DOM element”。这在WebElement的Selenium文档中有详细说明。你知道吗

您正在尝试检索web元素的值。您需要使用在Web元素接口中声明的get\u属性方法。基本上,此方法将以字符串格式返回指定属性的值。你知道吗

解决方案1:

locator= driver.find_element_by_xpath("//span[@id='childrenspan173273808']//a").get_attribute("id")
print(locator)

解决方案2:

locator=driver.find_element_by_xpath("//span[@class='plugin_pagetree_children_span plugin_pagetree_current']//a[1]").get_attribute("id")
print(locator)

相关问题 更多 >