【问题标题】:Use of dyanmic ID in xpath - Python(Selenium)在 xpath 中使用动态 ID - Python(Selenium)
【发布时间】:2019-09-19 15:07:16
【问题描述】:

我有一个 ID 列表,并希望在 XPath 中动态传递这些 ID。以下是我正在使用的代码:

hd_DescText=''
for HD_IdValue in CT_3_row_IDs:
    path=".//tr[@id='" + HD_IdValue + "']/td[2]/table/tbody/tr/td[3]/div/font"
    path=str(path)
    print(path)
    hd_DescText=browser.find_element_by_xpath(path).get_attribute("innerHTML")
    print(hd_DescText)
    #contains(@id,'"+ HD_IdValue + "')

虽然 print(path) 在执行此代码时给出了确切的路径。我收到以下错误:

NoSuchElementException:消息:没有这样的元素:无法定位 元素: {"method":"xpath","selector":".//tr[contains(@id,'tr_m_1570_1025516')]/td[2]/table/tbody/tr/td[3]/div/font" }

【问题讨论】:

  • 您添加了等待吗?您是否检查过您想要的元素是否在 IFRAME 内?您是否使用浏览器开发工具验证了 XPath 是否确实定位了元素?如果没有指向页面的链接或更多信息,我们无法真正回答这个问题。
  • 我必须在哪里添加等待?所需的元素不在 IFRAME 中。 XPath 正在使用浏览器开发工具定位元素。
  • 您会为您的查找添加等待。通常最好在触摸页面上的任何内容之前添加等待,以防加载速度比平时慢或无法立即使用。见the docs

标签: python-3.x selenium-webdriver


【解决方案1】:

嘿,使用下面的代码行后,我能够提取所需的数据:

path="//*[@id=" + "'"+ HD_IdValue + "'"+ "]/tbody/tr/td[3]/div/font"
hd_DescText=browser.find_element_by_xpath(path).get_attribute("innerHTML")

这里 HD_IdValue 具有 ID 的动态值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 2014-09-15
    • 2020-03-13
    • 1970-01-01
    • 2021-02-23
    相关资源
    最近更新 更多