0

私はチャートデータの自動化に取り組んでいます。データの表現方法は次のとおりです。selgium webdriverを使用してsvgパス要素をクリックできません

<g style="cursor:pointer;" clip-path="url(#highcharts-2)" transform="translate(62,10) scale(1 1)" class="highcharts-markers highcharts-series-0 highcharts-tracker"> 
<path d="M 811 367.23566666666665 L 816 372.23566666666665 811 377.23566666666665 806 372.23566666666665 Z" fill="#18abc9"></path> 
<path d="M 731 400.91344444444445 L 736 405.91344444444445 731 410.91344444444445 726 405.91344444444445 Z" fill="#18abc9"></path> 
<path d="M 651 386.432 L 656 391.432 651 396.432 646 391.432 Z" fill="#18abc9"></path> 
<path d="M 570 390.61766666666665 L 575 395.61766666666665 570 400.61766666666665 565 395.61766666666665 Z" fill="#18abc9"></path> 
<path d="M 490 381.09166666666664 L 495 386.09166666666664 490 391.09166666666664 485 386.09166666666664 Z" fill="#18abc9"> 
</path><path d="M 410 334.905 L 415 339.905 410 344.905 405 339.905 Z" fill="#18abc9"></path></g> 

私は最初のパス要素をクリックするために以下のSeleniumコードを書いています。

List<WebElement> a = driver.findElements(By.xpath("(//*[name()='svg']//*[name()='path' and contains(@fill, '#090')])[1]")); 
Actions actionBuilder = new Actions(driver); 
actionBuilder.click(a.get(0)).build().perform(); 

リストaには、1つのweb要素が受信されています。クリックしようとすると、プログラムがエラーをスローします。

org.openqa.selenium.WebDriverException:要素はポイント(904,566.86669921875)でクリックできません。他の要素はクリックを受け取ります:<path d="M 801 341.00352 L 806 346.00352 801 351.00352 796 346.00352 Z" fill="#090"></path>

私が提供したパスは、私が提供したDOMとまったく同じではありません。

+0

'JavascriptExecutor'を'((JavascriptExecutor)ドライバとして使う).executeScript( "arguments [0] .click()"、a.get(0)); 'そして教えてください –

+0

@Saurabh Gaurそれはスローしますorg.openqa.selenium.WebDriverException:arguments [0] .clickは関数ではありません – ChanChow

+0

引数は[0] .cli ck()で、 '()'がありません。それを修正してください。 –

答えて

0

エラーは、別のパス要素がクリックしたいパスに重なっていることが原因です。私はパスが奇妙に形作られていると推測しています。セレンはその中央をクリックしようとしていて、もう一方のパスをクリックすることになります。 moveToElement()Actionsで試してみて、それが正しくなるまでオフセットを試してみてください。

関連する問題