问题描述
我是量角器的新手,试图测试价格滑块,该滑块可能会根据提供的价格范围对产品进行排序,因此我无法使用量角器拖动滑块(最小点)。如何移动滑块?
HTML
<span _ngcontent-serverapp-c119="" ngxsliderhandle="" class="ngx-slider-span ngx-slider-pointer ngx-slider-pointer-min" ng-reflect-ng-style="[object Object]" role="slider" tabindex="0" aria-orientation="" aria-label="" aria-labelledby="" aria-valueNow="10" aria-valuetext="10" aria-valuemin="10" aria-valuemax="100" style="opacity: 1; visibility: visible; left: 0px;"></span>
我尝试过
const pricetogggle = element(
by.xpath(
'//span[@class="ngx-slider-span ngx-slider-pointer ngx-slider-pointer-min"]'
)
);
browser.actions().dragAndDrop(pricetogggle,{x:100,y:0}).mouseUp().perform();
and
browser.actions().mouseMove(pricetogggle).mouseDown().mouseMove({x:100,y:0 }).mouseUp().perform()
解决方法
这就是我用的
/**
* Drags first element to the second one. The destination can either be an elementFinder or an offset in pixels
* @param {ElementFinder} $element
* @param {(ElementFinder|{x: number,y: number})} $destination
* @returns {promise.Promise}
*/
let dragAndDrop = ($element,$destination) => browser
.actions()
.mouseMove($element)
.perform()
.then(() =>
browser
.actions()
.mouseDown($element)
.perform()
)
.then(() =>
browser
.actions()
.mouseMove($destination)
.perform()
)
.then(() =>
browser
.actions()
.mouseUp()
.perform()
);
然后致电
await dragAndDrop($leftGrip,{x: 10,y: 0});
但是x
可能需要为负值,具体取决于您要移动的方向
我对量角器不熟悉。但是,如果您可以向我发送指向在其上实现了滑块的示例站点的链接,则可以尝试使用selenium-webdriver java。
同时,您可以查看我对以下问题的回答中的代码,看它是否对您有帮助。