为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁花如伊 2021-10-12 10:14:42
我是在 Python 中使用带有 Selenium 的 webdriver 的新手,并且在我正在致力于从 Web 门户自动提取一些数据的事情上遇到了障碍。我正在尝试在文本框中输入日期,但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']")任何帮助表示赞赏,谢谢!
查看完整描述

2 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

'-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')]")


查看完整回答
反对 回复 2021-10-12
  • 2 回答
  • 0 关注
  • 241 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信