Protractor TypeScript拖拽操作报错求助:类型不匹配ILocation
解决Protractor拖拽操作中的TypeScript类型错误
这个问题我之前也踩过类似的坑,咱们快速把它搞定!
错误原因分析
你代码里传给mouseDown和mouseMove的坐标参数是字符串格式的'{x: 191, y: 56}',但Protractor的ILocation类型要求的是一个包含x、y数字属性的普通JavaScript对象。TypeScript的类型检查器严格校验参数类型,发现字符串和ILocation的结构完全不匹配,所以抛出了这个ts(2345)类型错误。
修正后的代码
只需要把坐标参数的引号去掉,直接传递纯对象就可以了:
browser.actions() .mouseDown(element(by.id('waze_map1')), {x: 191, y: 56}) .mouseMove(element(by.id('waze_map1')), {x: 540, y: 504}) .mouseUp() .perform();
额外小提示
- 这种写法是相对于目标元素左上角的偏移坐标,如果需要使用绝对屏幕坐标,可以省略第一个元素参数,直接传坐标对象(比如
mouseMove({x: 540, y: 504}))。 - 如果还是有类型相关问题,可以检查下
@types/protractor的版本,旧版本的类型声明可能存在兼容性问题,执行npm install @types/protractor --save-dev更新即可。
内容的提问来源于stack exchange,提问作者SeanRay
相关产品推荐
相关产品推荐

