2014-12-04 2 views
1

Очень новый с AngularJS и транспортиром, но я думаю, что пока иду в правильном направлении.Транспортир + Угловой JS + Жасмин - тест нажмите и удерживайте элемент

У меня есть список предметов, когда вы нажимаете и удерживаете элемент в течение X секунд, он открывает модальное окно.

Как смоделировать это поведение в Протрактор/Жасмин?

Я знаю, что есть «щелчок()» событие, но я хочу «нажмите и удерживайте» событие

Я уверен, что есть кто-то знает, как имитировать это.

Большое спасибо заранее!

ответ

2

Идея заключается в том, чтобы использовать mouseDown() первый:

/** 
* Presses a mouse button. The mouse button will not be released until 
* {@link #mouseUp} is called, regardless of whether that call is made in this 
* sequence or another. The behavior for out-of-order events (e.g. mouseDown, 
* click) is undefined. 
... 
*/ 

Затем вызовите browser.sleep() на Х секунд.

Затем вызовите mouseUp() отпустить кнопку мыши:

/** 
* Releases a mouse button. Behavior is undefined for calling this function 
* without a previous call to {@link #mouseDown}. 
... 
*/ 

Код:

browser.actions().mouseDown(element).perform(); 
browser.sleep(5000); 
browser.actions().mouseUp(element).perform(); 

где element является целевым элементом click-and-hold.


Рабочий пример (на основе this jsfiddle):

require('jasmine-expect'); 

describe('Test Click And Hold', function() { 
    beforeEach(function() { 
     browser.ignoreSynchronization = true; 
     browser.get('http://jsfiddle.net/LysCF/13/embedded/result/'); 
     browser.sleep(5000); 
    }); 

    it('should show appropriate list elements after click and hold', function() { 
     var frame = browser.findElement(by.xpath('//div[@id="result"]/iframe')); 
     browser.switchTo().frame(frame); 

     var element = browser.findElement(by.css('div.hold_trigger')); 
     browser.actions().mouseDown(element).perform(); 
     browser.sleep(5000); 
     browser.actions().mouseUp().perform(); 

     // check expectations 
    }); 
}); 
+0

WOW! Теперь я знаю, что не знаю многого! ;-) Я думал, что мне нужно использовать только команду транспортира, но мне кажется, что мне нужно узнать и узнать Jasmine гораздо больше! Большое спасибо! – David

Смежные вопросы