用量角器移动元素

时间:2015-06-18 16:04:23

标签: selenium protractor

我有一个问题,我无法使用dragAndDrop元素。 这个元素是Angular Directive中jquery的dragAndDrop。 我使用Protractor 2.10和Selenium 2.45。 我尝试了很多种方式的dragAndDrop:

/**
 *Draft dragAndDrop
 */

'use strict';


describe('DragAndDrop ', function() {

    beforeEach(function() {

        browser.get(browser.baseUrl);
        browser.waitForAngular();
    });

    it('test', function(){

        //var coordenadas = placaUno.getLocation();


        var buttonStart = element(by.binding('landing-main-button-start')).click();
        var placas= element(by.buttonText('Placas')).click();

        //OK
        //var placaUno = element.all(by.repeater('board in boards')).get(1);

        //img placa  to drag and drop
        var placaUnoCSS = element(by.css('#hwtoolbox > div > ul > li:nth-child(1) > div.submenu-level > div > div > div:nth-child(1) > img'));

        //space with drop placa
        var espacioPlaca = element(by.css('#boardSchema'));

        //First way -- not found
        //browser.actions().mouseDown(placaUnoCSS).mouseMove(placaUnoCSS,espacioPlaca).mouseUp().perform()

        //Second way -- not found
        browser.actions()
            .dragAndDrop(placaUnoCSS, espacioPlaca)
            .perform();

        //Third way -- not found
        /*
         browser.actions().dragAndDrop(
         browser.findElement(by.css('#hwtoolbox > div > ul > li:nth-child(1) > div.submenu-level > div > div > div:nth-child(1) > img')),
         browser.findElement(by.css('#protoboard-canvas'))).perform();
        */

        browser.pause();

    });

    afterEach(function(){

    });


});

是否需要在测试中调用本机Jquery事件?

此外,逐步调试,元素存在,单击即可,mouseDown正常... DragAndDrope sentecence可以,但不能在网站上拖放。

1 个答案:

答案 0 :(得分:0)

通过在placaUnoCSS元素中添加一个明智的命名类,帮我一个忙,给自己一些压力。然后,您可以通过以下方式选择它:

var startDragEle = element(by.css(".imageToDrag"));

鉴于您正确选择了拖动开始和结束元素

browser.actions().dragAndDrop().perform();

应该有效: - )

如果你需要它,那么API:

https://code.google.com/p/selenium/source/browse/javascript/webdriver/actionsequence.js