2016-08-03 8 views
3

Ich habe die folgende Ausnahme:Element ist nicht anklickbar am Punkt (x, y)

org.openqa.selenium.WebDriverException: Element is not clickable at point (1057.38330078125, 673.13330078125). Other element would receive the click:

button id="ID4b6a687af6934e35b6f355f6305dc481" data-layout="hbox" class="hux-ui-button" type="button" role="button">

enter image description here

Wie Sie sehen können, ich versuche, auf den Button "Speichern" zu klicken. Aber seltsamerweise sagt der Fehler, er kann nicht auf die Position klicken, aber das andere Element ist der Button, auf den ich klicken möchte.

Wissen Sie warum und wie kann ich das umgehen?

xpath = //span[text()='Speichern'

FF = 43,0

Selen = 2.49.

+0

Erhalten Sie ein einzelnes Element durch Ausführen von '$ x (" // span [text() = 'Speichern'] ")' in der Konsole? Hast du ein festes gesperrtes/Menü auf der Seite? –

+0

Das ist das Ergebnis: Array []. Die Leiste mit diesen drei Schaltflächen ist relativ. –

+0

hast du einen festen Banner wie Twitter https://twitter.com/search?q=twitter? Versuchen Sie, einen Screenshot mit Chrome zu erstellen, wenn die Ausnahme auftritt, um zu sehen, was Ihre Schaltfläche versteckt. –

Antwort

0

Nun, Sie haben dem Fahrer gesagt, dass er auf die Spanne klicken soll, nicht auf die Schaltfläche. Versuchen Sie, Ihren Xpath so zu ändern, dass er auf die Schaltfläche zeigt. Ich denke, das würde funktionieren:

//span[text()='Speichern']/.. 

Es ist davon ausgehen, dass es mit diesem Text nur das ein Element ist, und sieht für die Eltern, die Ihre Schaltfläche ist.

+0

Dies ist das einzige Element mit diesem Namen.Ich habe es auch mit dem xPath to Button und dem Span getestet - gleiches Ergebnis. Ich habe auch eine Wartezeit implementiert, aber es ändert sich nicht das Ergebnis :( –

0

Ausnahme eindeutig fest, Sie gehen zu click auf span während button Element würde den Klick erhalten, so müssen Sie auf button statt span wie unten klicken: -

driver.findElement(By.cssSelector("button.hux-ui-button")).click(); 

oder

driver.findElement(By.xpath(".//span[text()='Speichern']/parent::button")).click(); 

Bearbeitet: - Wenn Sie immer noch mit demselben Problem konfrontiert sind, versuchen Sie es mit JavascriptExecutor klicken Sie wie folgt: -

WebElement el = driver.findElement(By.xpath(".//span[text()='Speichern']/parent::button")); 
((JavascriptExecutor)driver).executeScript("arguments[0].click()", el); 
+0

Funktioniert nicht - das gleiche Ergebnis :-( –

+0

@KevinJanke Ok, wenn Sie immer noch mit dem gleichen Problem konfrontiert versuchen Sie 'JavascriptExecutor' zum Ausführen klicken, siehe bearbeitete Antwort .. :) –

+0

Hmm - funktioniert auch nicht - gleiches Ergebnis: -/ –

0

Sooo ... Ich habe gerade einen Pro-Programmer gefragt;).

Ich hatte meine Singelton mit diesem aktualisiert:

public static Optional<JavascriptExecutor> getExecutor() { 
WebDriver checkdriver = Driver.getWebInstance(); 

final JavascriptExecutor executor; 

if (checkdriver instanceof JavascriptExecutor){ 

    executor = (JavascriptExecutor)checkdriver; 

} 
else 
{ 
    executor = null; 
} 
return Optional.ofNullable(executor); 
} 

und dieses Objekt in der aktuellen Seite hinzugefügt:

WebElement el = Driver.getInstance().findElement(By.xpath(".//span[text()='Speichern']/parent::button")); 

Driver.getExecutor().ifPresent((executor) -> executor.executeScript("arguments[0].click()", el)); 

jetzt funktioniert es. Thx :)