【问题标题】:Cypress: resizing / dragging elements赛普拉斯:调整大小/拖动元素
【发布时间】:2021-12-02 11:30:22
【问题描述】:

我正在尝试通过单击右下角并将其向下拖动几个像素来调整框元素的大小。举例我有但不工作:

    it("tests resizing elements", () => {
        cy.findByText(/zoom/i)
            .nextAll(1)
            .invoke("text")
            .then(($text) => {
                let zoom = parseInt($text.split("%")[0]);
                let objects;
                cy.window()
                    .then(($win) => {
                        objects = $win.canvas.getObjects();
                    })
                    .then(() => {
                        cy.getSidebarButton("Edit mode").click();
                        // x and y are relative to the zoom percentage
                        let x =
                            ((objects[objects.length - 1].left +
                                objects[objects.length - 1].width) /
                                100) * zoom;
                        let y =
                            ((objects[objects.length - 1].top +
                                objects[objects.length - 1].height) /
                                100) * zoom;
                        cy.getCanvas()
                            .trigger("mousedown", x, y)
                            .trigger("mousemove", x + 20, y + 25)
                            .trigger("mouseup", x + 20, y + 25);
                    });
            });
    });

代码当前所做的是点击正确的位置,拖动对象然后释放,但它移动对象而不是调整它的大小。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript cypress


    【解决方案1】:

    尝试直接触发resize:

    cy.getCanvas().trigger('resize',x,y);
    

    【讨论】:

      【解决方案2】:

      终于知道我需要什么了。问题是需要单击该元素。所以用

      替换我的代码的最后一点
                              cy.getCanvas()
                                  .trigger("mousedown", x, y)
                                  .trigger("mouseup", x, y)
                                  .trigger("mousedown", x, y)
                                  .trigger("mousemove", x + 50, y + 55)
                                  .trigger("mouseup", x + 50, y + 55);
      

      解决了我的问题。 (令我惊讶的是,.click() 还不够,它必须是 mousedownmouseup。)

      帮助我意识到这是必要的,是监视手动执行时触发的事件。

      【讨论】:

      • 我试过了,它不适合我。我还想拖动 cdk-drop-list 元素的右下箭头。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      • 2022-10-05
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 2021-10-12
      相关资源
      最近更新 更多