1

Mit Nightwatch und Selen, während eines Systemtests, versuche ich Drag & Drop, die mit Knockout-ziehbaren durchgeführt wird. Es funktioniert 100% bei der manuellen Verwendung. Dies ist der Code aus dem Systemtest, die angeblich eine ziehbar Box per Drag & Drop:Drag & Drop funktioniert nicht in Nightwatch + Selenium

this.moveToElement('@box', 0, 0); 
c.mouseButtonDown(0); 
this.moveToElement('@box2', 0, 40); 
c.mouseButtonUp(0); 

this die Seite zu sein (in der die XPath Elemente) und c der Kunden zu sein.

Aber das scheint nicht einmal in der Lage zu sein, die Box unter der zweiten Box (die etwa 40 Pixel hoch ist) zu bewegen. Ja, ich habe verschiedene Nummern ausprobiert und es zieht die Box nicht einmal irgendwo hin. Fertig in Firefox.

Und ja, beide @box und @box2 arbeiten XPaths. Ich benutze diese für eine Reihe von anderen Tests für eine Weile.

+0

Ich habe versucht, diese Bibliothek zu verwenden: https://github.com/Kuniwak/html-dnd aber es scheint, es funktioniert nicht für mich, können Sie dies in Ihrem Projekt versuchen – Hikaryu

Antwort

1

Wie wäre es eine Pause zwischen c.mouseButtonDown(0); und setzen gemacht this.moveToElement('@box2', 0, 40);

0

ich eine customCommand für dieses Problem. Es funktioniert ohne ein Problem

module.exports.command = function (LocatorFrom, LocatorTo, callback) { 

    var self = this; 

    this 
    .getLocation(LocatorTo, function (result) { 
     let xto = result.value.x; 
     let yto = result.value.y; 

     this.moveToElement(LocatorFrom, 10, 10) 
     .mouseButtonDown(0) 
     .pause(2000) 
     .moveToElement(LocatorTo, xto, yto) 
     .pause(2000) 
     .mouseButtonUp(0); 
     return this; 
    }); 



    return this; 
}; 
0

Jungs müssen Sie dies versuchen und es funktioniert gut in Chrome, Firefox und IE.

Nur müssen Sie installieren "html-dnd" npm verwenden, sowie der Link ist -
https://www.npmjs.com/package/html-dnd

Nach der Installation müssen Sie nur diesen Befehl ausführen:
browser.execute(dragAndDrop, ['#draggable', '#droppable']);

Für Beispiel:
browser.execute(dragAndDrop,['#elemendId1', '#elemendId2']).pause(2000);

Hoffe, das wird gut für Ihre Testfälle funktionieren.

Verwandte Themen