使用 selenium 定位和查找具有动态 ID 的元素

问题描述 投票:0回答:2

如何找到并选择一个具有动态 ID 的元素,每次重新加载页面时总是会发生变化, 这是我要选择的 ID

id=x-auto-234-input
但 3 位数字总是在变化,有什么想法吗?

下面是脚本

<div role="presentation" class="MegaEntryTextField x-component" id="x-auto-234" style="width: 60px; height: 22px;">
  <input type="text" class=" x-form-field x-form-text " id="x-auto-234-input" tabindex="0" style="width: 52px; height: 18px;">
</div>

你能推荐有效的 XPATH 和 CSS 选择器吗

python selenium-webdriver xpath css-selectors selenium-chromedriver
2个回答
0
投票

从这段有限的代码中,我认为你能得到的最具体的是这个 CSS 选择器:

div.MegaEntryTextField.x-component[id^="x-auto-"][role="presentation"]>input[id^="x-auto-"][id$="-input"][type="text"]

这里的主要部分是

[id^="x-auto-"][id$="-input"]
,它只会选择ID以
x-auto-
开头并以
-input
结尾的元素,有效地只忽略动态编号。选择器的其余部分匹配类、标签名称和属性,只是为了好的衡量标准。


0
投票

这里是解决方案:

driver.find_element(By.CSS_SELECTOR, 'input[id^="x-auto-"]')

详情请参考这里

© www.soinside.com 2019 - 2024. All rights reserved.