2017-07-11 2 views
0

Selen Mit w/Java-Bindungen und ChromeDriver 2.3 mit den neuesten BrowserSelen/Java: Drag & Drop funktioniert nicht für unsichtbare Elemente

installiert ich derzeit nach mehr als genug Zeit, stapfte ich versucht, eine Lösung zu finden. Ich versuche gerade, ein Element auf ein anderes Element zu ziehen und abzulegen. Der einzige Haken ist das Elementziel, zu dem ich mich bewegen muss, wenn ich das Quellelement verschiebe. Irgendein Rat?

So, hier ein Screenshot des Quellelements, das ich klicken und halten, und dann ziehen sie die beiden Optionen aussetzt, die ich auch fallen kann:

Element that is the source

So wie ich die Maus gedrückt halten und ziehen nur einen kleinen Teil, werden die Tropfen Ziele sichtbar, per Screenshot unten:

Targets visible once mouse is dragged with source

Hier ist der neueste Code-Schnipsel ich habe versucht, dass ich damit dies geschieht glauben sollte, aber ye Es passiert nichts und geht weiter in das Thread.sleep(), das nur zu Beobachtungszwecken eingefügt wurde. Diese werden unter der Annahme, gesunde Instanzen WebDriverWait und WebDriver:

driverWait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='user-info ng-binding'][text()='Sample Text']")));   
driverWait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='user-info ng-binding'][text()='Sample Text']"))); 
source = driver.findElement(By.xpath("//div[@class='user-info ng-binding'][text()='Sample Text']")); 

//move to element, click and hold, and then move it to expose the available options 
actions.moveToElement(source).clickAndHold().pause(Duration.ofSeconds(1)).moveByOffset(10, 10).pause(Duration.ofSeconds(1)).build().perform(); 
Thread.sleep(10000); 

So ist die Idee dahinter ist einfach zu klicken und die Quelle zu halten, bewegen sie ein wenig, um die Ziele anzuzeigen, und dann die Ziele zu finden, und verwenden Sie die Aktionen .release(), um das Ziel auf die Quelle zu verschieben, aber wenn ich es debugge, tut es nichts auf dem Element zu dem Element und geht direkt zu Thread.sleep(). Ich habe über viele Bugs gelesen. Jeder Rat würde sehr geschätzt werden.

+0

Werfen Sie einen Blick auf https://stackoverflow.com/a/45037227/8020699 es wie es aussieht – TitusLucretius

+0

Problem mit Drag & Drop in Selen bekannt ist, ich habe diesen Thread gesehen. Ich glaube nicht, dass mein Problem damit zusammenhängt, da ich ein herkömmliches Ziehen und Ablegen nicht machen kann, da die Elemente erst sichtbar sind, wenn die Quelle verschoben wird. – potatocode

+0

Ich versuche derzeit einige der Kombination von Roboter/Selen Drag-and-Drop-Workarounds von hier: https://github.com/SeleniumHQ/selenium-google-code-issue-archive/issues/3604 Ich werde aktualisieren, wenn ich es tue Ergebnisse erhalten – potatocode

Antwort

0

Ich weiß, das ist eine alte Frage, aber ich suchte nach einer Lösung, aber am Ende habe ich nur den versteckten Bereich sichtbar gemacht. Ich weiß, das ist nicht ideal, scheint aber zu funktionieren.

JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("arguments[0].setAttribute('style', 'display:block')", targetElement); 
+0

Dies würde eine Ausnahme setzen, da der Treiber das Element nicht finden könnte? – potatocode