大家早上好,我已经尝试了几天来执行e2e测试,在Selenium中执行Drag& Drop事件,经过几种方法解决这个问题,有人告诉我有关赛普拉斯的事情,所以,我在这里尝试学习这些新东西。
问题是,如何从赛普拉斯的某个元素中获取x位置和y位置?在GitHub中,有人使用了这个函数
function moveElement(element, x, y) {
cy.get(`${element}`)
.trigger('mousedown', { which: 1 })
.trigger('mousemove', { clientX: x, clientY: y })
.trigger('mouseup', { force: true })
}
但是,我不认为直接插入x和y坐标是最好的工作方式,因此,在Selenium我有类似的东西
int getXCoordinate(WebElement){
location = WebElement.getLocation();
x = location.getX();
return X;
}
有没有办法编写与此类似的函数?
更新
对于那些对此感兴趣的人,cypress运行简单的ES6,所以你可以使用
element.left+window.scrollX
检索X坐标和
element.top+window.scrollY
检索Y坐标。
答案 0 :(得分:1)
我不确定您到底要尝试什么,但是如果您的目标是通过赛普拉斯提供一般的拖放操作,则有一个npm软件包
npm install --save-dev cypress-file-upload
您应该将其导入cypress command.js
详细信息在https://www.npmjs.com/package/cypress-file-upload上进行了说明,还有一个在其中拖放的示例。
我如何实现的一个示例是:
it("should upload a file", () => {
cy.fixture('afile.withanextension','base64').then(file => {
cy.get('input') // or how you find that element
.upload({
file,
fileName: 'afile.withanextension',
mimeType: 'propermimetype' // e.g. image/jpg
},
{
uploadType:'input'
}
)
});
})