我有一个包含以下内容的网页:
<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 打印为 63cd644e-495b-4985-8f9e-7ea067a2b6f1
而不是 childrenspan173273808-0
。
我也尝试过 get_attribute
和 get_property
但它们也不起作用。欢迎任何提示/提示/建议。
提前致谢。
最佳答案
我在这里看到的问题是您正在尝试获取 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 Turnover
的 a
元素之外的 span
元素。我们查询包含 a
元素的 span
和 Shift Turnover
文本,然后调用 上的
元素,以检索所需的 get_attribute
spanchildrenspan173273808-0
ID。
最后 -- 在您的示例中打印出的 ID 63cd644e-495b-4985-8f9e-7ea067a2b6f1
不是 WebElement
ID属性,而是“the server-assigned opaque ID for the underlying DOM element ”。这在 WebElement
上的 Selenium 文档中有详细说明。
关于python - 当我打印 id 时,它与 "inspect element"中的 id 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59092570/