транспортир перетаскивания не работает на хром - PullRequest
0 голосов
/ 11 июня 2018

У меня проблема с транспортиром v ~ 5.3.0.Я пытался перетащить элемент с этого сайта: https://www.html5rocks.com/en/tutorials/dnd/basics/

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

describe('germi App', () => {
  let page: AppPage;

  beforeEach(() => {
    page = new AppPage();

    browser.waitForAngularEnabled(false);
  });

  it('should  drag and drop with JavaScript', async () => {
    await page.navigate2();
    const element1 = element(by.xpath('//*[@id="columns-full"]/div[1]'));
    const element2 = element(by.xpath('//*[@id="columns-full"]/div[2]'));
    browser.sleep(10000);

    /* browser
        .actions()
        .dragAndDrop(element1, element2)
        .perform();
    browser.sleep(5000); */

    browser.actions().
      mouseDown(element1).
      mouseMove(element2).
      mouseUp().
      perform();

    browser.sleep(5000);
  });
});

на случай, если вы захотите проверить мою функцию navigate2.

navigate2() {
           return browser.get("https://www.html5rocks.com/en/tutorials/dnd/basics/");
         }

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Функция перетаскивания для элементов HTML5 не поддерживается текущими веб-драйверами.Вам придется запускать события dragenter, dragover и drop с помощью некоторого JavaScript.

Решение:

  1. Загрузка drag_and_drop_helper.js и сохраните его на своем компьютере.
  2. Внутри теста вы можете выполнить опцию перетаскивания, используя,

    var fs = require("fs");
    var dnd_js = fs.readFileSync(path/to/drag_and_drop_helper.js);
    driver.get("http://the-internet.herokuapp.com/drag_and_drop");
    driver.executeScript(dnd_js+"$('#column-a').simulateDragDrop({ dropTarget: '#column-b'});") 
    

См. http://elementalselenium.com/tips/39-drag-and-drop для дополнительной информации.Информация.Надеюсь, это поможет вам!

0 голосов
/ 11 июня 2018

У меня была такая же проблема.

И, наконец, я смог решить эту проблему, используя browser.driver .

. Он лучше работает в приложениях AngularJS, для синхронизации которых требуется время.browser.driver более надежен во многих случаях.

  driver = browser.driver

  driver.actions().
  dragAndDrop(element1, element2).
  perform()

Надеюсь, это поможет вам!

...