【问题标题】:Drag and Drop with webdriver.io使用 webdriver.io 拖放
【发布时间】:2020-02-24 15:13:47
【问题描述】:

我正在尝试使用 WebDriver.io 的拖放方法,但它不起作用。我使用了网站上的示例拖放:https://www.w3schools.com/html/html5_draganddrop.asp 我需要这个来自动化 Angular 应用的拖放功能。

请有人帮助我或找到解决方法。

【问题讨论】:

    标签: javascript typescript selenium-webdriver selenium-chromedriver wdio-v5


    【解决方案1】:

    您可以使用 buttonDown 和 buttonUp 方法创建自定义拖放:

    dragAndDrop(element, x = 0, y = 0) {
      element.moveTo();
      browser.buttonDown(0);
      element.moveTo(x, y);
      browser.buttonUp(0);
    }
    

    您可以使用otherElement.moveTo(); insted of element.moveTo(x, y); 来移动到特定元素。

    你也可以使用performActions()函数,像这样:

    const dragAndDrop = (element, x = 0, y = 0) => {
      const location = getElementLocation(element);
      browser.performActions([
        {
          type: 'pointer',
          id: 'finger1',
          parameters: { pointerType: 'mouse' },
          actions: [
            { type: 'pointerMove', duration: 0, x: location.x, y: location.y },
            { type: 'pointerDown', button: 0 },
            { type: 'pointerMove', duration: 0, x: location.x + x, y: location.y + y },
            { type: 'pointerUp', button: 0 },
          ],
        },
      ]);
    };
    

    【讨论】:

    • 自定义 performActions() 函数对我来说在 wdio v6 上运行良好。只是评论补充说我的元素有圆形边框,因此最初不起作用。我使用element.getSize() 更新了x / y 以定位元素的中间,然后将一半的高度添加到y 并将一半的宽度添加到x。我希望这可以帮助其他可能陷入困境的人。
    猜你喜欢
    • 2021-10-02
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 2012-01-30
    • 2011-08-05
    相关资源
    最近更新 更多