0

Ich arbeite an der Automatisierung von Diagrammen Daten und unten ist, wie die Daten dargestellt werden.Klicken Sie nicht auf ein SVG-Pfadelement mit Selen-Webdriver

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

Ich habe den folgenden Selen Code geschrieben, um auf das erste Pfadelement zu klicken.

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(); 

Die Liste a hat nur einen webelement erhalten. Das Programm gibt einen Fehler aus, wenn es versucht zu klicken.

org.openqa.selenium.WebDriverException: Element kann nicht an Punkt geklickt werden (904, 556.86669921875). Anderes Element erhalten würde den Klick: <path d="M 801 341.00352 L 806 346.00352 801 351.00352 796 346.00352 Z" fill="#090"></path>

Der Weg, den ich in dem Fehler vorgesehen ist nicht genau das gleiche wie das DOM I zur Verfügung gestellt.

+0

Versuchen Sie mit 'JavascriptExecutor' dann als '((JavascriptExecutor) -Treiber) .executeScript (" Argumente [0] .click() ", a.get (0));' und lassen Sie mich wissen –

+0

@Saurabh Gaur Es wirft org.openqa.selenium.WebDriverException: Argumente [0] .click ist keine Funktion – ChanChow

+0

Es sollte arguments [0] .cli ck() sein, Sie vermissen '()'. Bitte korrigiere es. –

Antwort

0

Der Fehler liegt an der Tatsache, dass ein anderes Pfadelement den Pfad überlappt, auf den Sie klicken möchten. Ich vermute, dass der Pfad seltsam geformt ist und Selen versucht, in die Mitte zu klicken und auf den anderen Pfad zu klicken. Sie können moveToElement() in Actions versuchen und mit den Offsets spielen, bis Sie es richtig machen.

Verwandte Themen