2014-04-10 13 views
9

Ich versuche, meine Anwendung zu testen, wo ich ein Widget von einem Ort zum anderen verschieben muss, in anderen Worten muss ich ziehen & Drop-Funktionalität in einem Ende zu Ende Prüfung.Wie testen Drag & Drop-Funktionalität in AngularJS e2e testen

Wie würde ich das testen?

+2

Have ein Blick auf https://github.com/angular/protractor/issues/123 und https://github.com/angular/protractor/commit/fb46ec9bcd568510248831f11d43d0e2398cc606 –

+0

@Nicolae Olariu der Link (https://github.com/angular/Winkelmesser/commit/fb46ec9bcd568510248831f11d43d0e2398cc606) Sie haben Arbeit für mich zur Verfügung gestellt –

Antwort

1

Sie Kette der Maus Aktionen benötigen:

var yourOffset = {x:5,y:5}; 
ptor().actions(). 
    mouseMove(yourElement,yourOffset). 
    mouseDown(). 
    mouseMove(youTarget[,targetOffset]). // [] optional 
    mouseUp(). 
    perform(); 
0

Sie ptor.actions().dragAndDrop(el1, el2).perform(); verwenden können

Ich habe eine example hier aus der Testsuite in meiner eigenen Anwendung:

/** 
* Reorders questions by dragging and dropping. 
*/ 
this.moveQuestion = function (questionToMove, positionToMoveTo) { 
    return page.getQuestionField(positionToMoveTo).then(function (dest) { 
     page.getDragHandle(questionToMove).then(function (dragHandle) { 
      ptor.actions().dragAndDrop(dragHandle, dest).perform(); 
      ptor.sleep(800); // wait for animation 
     }); 
    }); 
}; 
4

I hatte das gleiche Problem. Die Lösung für mich war der Beratung in der Selenium Ausgabe folgt hier: https://code.google.com/p/selenium/issues/detail?id=3604#c20

mit dem Beispiel ab @nilsK, hier wurde meine Lösung:

var yourOffset = {x:5,y:5}; 
ptor().actions() 
    .mouseMove(yourElement,yourOffset) 
    .mouseDown() 
    .mouseMove(yourElement,{x:0,y:0}) // Initial move to trigger drag start 
    .mouseMove(youTarget[,targetOffset]) // [] optional 
    .mouseUp() 
    .perform(); 

Ich denke, das löst auch this issue