量角器+ AngularJS + Jasmine - 测试按住项目

时间:2014-12-04 17:37:26

标签: angularjs jasmine protractor ionic

AngularJS和Protractor非常新,但我认为到目前为止我的方向正确。

当您点击并按住该项目X秒时,我的网站有一个项目列表,它会打开一个模态窗口。

如何在Protractor / Jasmine中模拟该行为?

我知道有" click()"事件,但我希望"点击并按住"事件

我确信有人知道如何模拟它。

提前非常感谢!

1 个答案:

答案 0 :(得分:3)

我的想法是首先使用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() X秒。

然后,调用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();

其中elementclick-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
    });
});