python
  • selenium
  • svg
  • 2016-08-19 161 views 4 likes 
    4

    我有下面的代碼,它可以在svg中找到所有的g,但我怎樣才能獲得g和路徑值中的路徑元素?使用Selenium(Python)獲取svg路徑

    我與這個網站的測試:http://www.totalcorner.com/match/live_stats/57565755

    相關代碼:

    nodes = self.driver.find_elements_by_xpath("//div[@id='all_container']/*[@id='highcharts-0']/*[name()='svg']/*[name()='g']") 
    

    我已經嘗試過這樣的:

    nodes = self.driver.find_elements_by_xpath("//div[@id='all_container']/*[@id='highcharts-0']/*[name()='svg']/*[name()='g']/*[name()='path']") 
    

    但我得到的是這樣的:

    [<selenium.webdriver.remote.webelement.WebElement (session="fb86fb35-d2fa-974a-af32-a15db1b7459d", element="{c1dad34f-764d-0249-9302-215dd9ae9cd8}")>, <selenium.webdriver.remote.webelement.WebElement (session="fb86fb35-d2fa-974a-af32-a15db1b7459d", element="{a53816f4-9952-ab49-87ac-5d79538a855d}")>, ...] 
    

    我如何使用它來查找路徑值? 非常感謝

    我更新的解決方案:

    感謝大家的努力。羅伯特Longson的更新的答案後,我認爲以下是更好的解決方案:

    nodes = driver.find_elements_by_xpath("//div[@id='all_container']/*[@id='highcharts-0']/*[name()='svg']/*[name()='g']/*[name()='path']") 
    for node in nodes: 
        print(node.get_attribute("d")) 
    

    因爲如果使用driver.find_elements_by_tag_name我不能區分的路徑,我認爲以上的回答是好。

    回答

    3

    你得到一個列表,所以嘗試:

    for node in nodes: 
        print(node.text) 
    

    如果你正在尋找一個屬性的值,那麼請使用以下(href做爲一個例子):

    print(node.get_attribute('href')) 
    
    +0

    否,打印這些節點只給我STHG這樣的: [,...] – Derekyy

    +1

    你使用循環'節點在節點:'? –

    +0

    是的,我嘗試過,但仍然相同 – Derekyy

    2

    find_elements_by_tag_name可用於查找路徑的孩子。

    一旦你有了這些,get_attribute(「d」)將得到你的路徑值。

    E.g.

    for node in nodes: 
        paths = node.find_elements_by_tag_name("path") 
        for path in paths: 
         value = path.get_attribute("d") 
    
    +0

    thx很多,它的工作原理。只需要改變這一行: paths = driver.find_elements_by_tag_name(「path」) thx每個人的努力 – Derekyy

    +0

    這將找到你所有的路徑,不管他們是否是g元素的孩子。 –

     相關問題

    • 暫無相關問題^_^