python - 当我打印 id 时,它与 "inspect element"中的 id 不匹配

标签 python selenium element

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

<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 但它们也不起作用。欢迎任何提示/提示/建议。

提前致谢。

最佳答案

我在这里看到的问题是您正在尝试获取 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 元素的 spanShift Turnover 文本,然后调用 上的 get_attribute span 元素,以检索所需的 childrenspan173273808-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/

相关文章:

python - 如何优化 100000 次迭代的 python 循环?

python 'dict' 对象没有属性 'viewkeys'

selenium - Selenide 结合了 2 个 ElementsCollections

java - 删除数组元素后如何将元素向左移动?

html - 响应式 5 个 div 元素 CSS,一一

python - 如何从 "Health"元素中提取文本

python - 将字符串化列表的列表转换为数据帧,同时维护索引

python - Selenium 中的剪贴板按钮

python - 使用 Selenium webdriver 在 Python 中定位 iframe

python - ElementTree 和 Element 有什么区别? ( python XML)