2016-08-19 2 views
4

У меня есть следующий код, который находит все g в svg, но как я могу получить эти элементы пути внутри g и их значение пути?Получить путь в svg, используя Selenium (Python)

Я тестирую с этим сайтом: 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}")>, ...] 

Как я могу использовать это, чтобы найти значение пути? Большого спасибо

Моего обновленное решения:

благодаря усилию каждого. После того, как обновленный ответ Роберта Лонгсон, я думаю, что следующее является лучшим решением:

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 («путь») thx усилие пользователя – Derekyy

+0

Это найдет вам все пути, независимо от того, являются ли они дочерними элементами g элементов. –

Смежные вопросы