python
  • selenium
  • xpath
  • 2014-07-09 76 views 0 likes 
    0

    網址爲http://www.ukmi.nhs.uk/applications/ndo/record_view_open.asp?newDrugID=5073硒的Python:獲得元素的行的索引中找到

    我需要檢查是否「循證評價」存在,如果是這樣,根據打印的內容。爲了找到的頭,我所做的是:

    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而改變。那麼我怎麼得到這個指數呢?

    任何幫助,將不勝感激!

    +1

    您關注的是索引和DOM中事物的位置。這是問題所在,而不是你需要獲得某些東西索引的事實,而是你需要找到這些元素的更好方法。 – Arran

    +0

    嗯。現在無關緊要。我能夠做到。謝謝。 – user3691767

    回答

    0

    鑑於 '循證評價' 的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) 
    

    我能夠得到相關數據

    相關問題