2016-08-19 32 views
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']/*[name()='path']") 

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

を私はすでにこれを試してみました

[<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}")>, ...] 

これを使用してパスの値を見つける方法を教えてください。 おかげでたくさん

私の更新ソリューション:

感謝のみんなの努力。 driver.find_elements_by_tag_nameを使用している場合、私はパスを区別することはできませんので、私は上記の答えは優れていると思い

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")) 

:ロバートLongsonの更新答えた後、私は次のことが、より良い解決策だと思います。

答えて

3

あなたがリストを取得し、そうしようとしている。

for node in nodes: 
    print(node.text) 

を使用すると、属性の値を探しているならば、(ここでは例としてhref)を以下のように使用します。

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

いいえ、それらのノードを印刷するだけ私は、このようなsthg与える: は[、...] – Derekyy

+1

ノード' for node: 'のループを使用していますか? –

+0

はい、私も同じように試しましたが、 – Derekyy

2

find_elements_by_tag_nameを使用して、パスの子を見つけることができます。

これを取得すると、get_attribute( "d")がパス値を取得します。

など。

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要素の子であるかどうかに関係なく、すべてのパスが見つかります。 –

関連する問題