【问题标题】:Selenium Python : get index of row of element foundSelenium Python:获取找到的元素行的索引
【发布时间】:2014-07-09 17:57:42
【问题描述】:

网址是http://www.ukmi.nhs.uk/applications/ndo/record_view_open.asp?newDrugID=5073

我需要检查是否存在“基于证据的评估”,如果存在,则打印其下的内容。为了找到标题,我所做的是:

driver.find_element_by_xpath("//*[@id='contentHolder']//td[text()='Evidence Based Evaluations']")

完整的 xpath 是:

//*[@id="contentHolder"]/table/tbody/tr/td/table/tbody/tr[4]/td/table/tbody/tr/td[1]/table/tbody/tr[22]/td

下一个元素(我需要打印)的 xpath 是:

 //*[@id="contentHolder"]/table/tbody/tr/td/table/tbody/tr[4]/td/table/tbody/tr/td[1]/table/tbody/tr[23]/td[1]

我需要获取 tr 的索引(在本例中为 22),以便我可以递增它并将其用于下一步。但是,tr 的索引会根据 URL 中传递的 ID 而变化。那么如何获取这个索引呢?

任何帮助将不胜感激!

【问题讨论】:

  • 您过于关注索引和 DOM 中事物的位置。这就是问题所在,不是您需要获取某物的索引,而是您需要一种更好的方法来查找这些元素
  • 嗯。现在真的无所谓了。我能够做到。谢谢。

标签: python selenium xpath


【解决方案1】:

给定“基于证据的评估”的 xpath 是:

driver.find_element_by_xpath("//*[@id='contentHolder']//td[text()='Evidence Based Evaluations']")

后续所需元素的xpath为:

//*[@id="contentHolder"]/table/tbody/tr/td/table/tbody/tr[4]/td/table/tbody/tr/td[1]/table/tbody/tr[23]/td[1]
//*[@id="contentHolder"]/table/tbody/tr/td/table/tbody/tr[4]/td/table/tbody/tr/td[1]/table/tbody/tr[24]/td[1]
//*[@id="contentHolder"]/table/tbody/tr/td/table/tbody/tr[4]/td/table/tbody/tr/td[1]/table/tbody/tr[25]/td[1]

我做的是

inp = driver.find_elements_by_xpath("//*[@id='contentHolder']//td[text()='Evidence Based Evaluations']/following::tr/td[1]")

然后使用

print (inp[i].text)

我能够得到相关数据

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 2018-11-07
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多