gpt4 book ai didi

python - 如何通过 Selenium Webdriver 查找具有动态 id 的元素

转载 作者:行者123 更新时间:2023-11-30 22:00:52 24 4
gpt4 key购买 nike

我刚开始在 Python 中使用 webdriver 和 Selenium,并且在我正在从事的从门户网站自动提取数据的工作中遇到了障碍。我试图在文本框中输入日期,但无论我尝试以哪种方式搜索元素,我的脚本都会返回 NoSuchElementException

使用 Chrome,我可以使用下面的 ID 轻松识别检查窗口中的元素,但使用 Python 找到它是不可能的。

我试图隔离的 HTML 元素:

input id="6A8A7718100001256A44465A5ED3AEAC-toDate" type="text" value="01/15/2019" size="10" maxlength="10" onchange="validateDateField('to', '6A8A7718100001256A44465A5ED3AEAC-fromDate', '6A8A7718100001256A44465A5ED3AEAC-toDate', '6A8A7718100001256A44465A5ED3AEAC-absRangeErr')"

这是我尝试过的:

from_date = driver.find_elements_by_id("6A8A7718100001256A44465A5ED3AEAC-fromDate")
from_date = driver.find_element_by_xpath("//input[@id='6A8A7718100001256A44465A5ED3AEAC-fromDate']")
from_date = from_date = driver.find_element_by_css_selector("input[id='6A8A7718100001256A44465A5ED3AEAC-fromDate']")

感谢任何帮助,谢谢!

最佳答案

“-toDate”之前的字母数字字符似乎是自动生成的。这意味着它们可能会在站点的构建之间发生变化,或者可能在 js 运行时动态创建。

因此,我会在 xpath 中使用 contains 关键字,因为它对于这些更改应该更加稳健。

to_date = driver.find_element_by_xpath("//input[contains(@id, '-toDate')]")
from_date = driver.find_element_by_xpath("//input[contains(@id, '-fromDate')]")

关于python - 如何通过 Selenium Webdriver 查找具有动态 id 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54208186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com