鼠标移动到元素并从该元素向下滚动 100 像素



我有以下测试页面 - https://testnewsnippetcom.000webhostapp.com/test_scroll.html

我想转到数字 15 并从数字向下滚动 100 像素。是否可以仅使用量角器执行此操作。我可以用 JavaScript 执行它,但只通过量角器动作来执行它会很好。

it('Test MouseMove', async (done) => {
await browser.waitForAngularEnabled(false);
await browser.get('https://testnewsnippetcom.000webhostapp.com/test_scroll.html');
await browser.actions().mouseMove($('body > p:nth-child(38)')).mouseMove({x: 0, y: 100}).perform();
await browser.sleep(15000);
done();
});

上面的测试仅滚动到 15,但不会执行额外的 100 像素。

理论上应该是可能的。这是官方量角器页面的示例

browser.actions().
mouseMove(element).
mouseMove({x: 50, y: 0}).
doubleClick().
perform();

基本上你正在做同样的事情,但是,这个例子在async/await发挥作用之前就被赋予了链接承诺。我的假设是你的代码不起作用,因为你无法使用await解析链。你应该做的是编写一个这样的函数:

async function scrollDownFromElement($element, offset) {
await browser.actions().mouseMove(element).perform();
await browser.actions().mouseMove({x: 50, y: offset}).perform();
}

然后称之为:

await scrollDownFromElement($('body > p:nth-child(38)'), 100);

我没有机会测试它...因为我是这样做的(你不想利用(

scroll ($element, offsetY = 0) => browser.executeScript(
`arguments[0].scrollIntoView();
window.scroll(
0,window.scrollY-50-(${offsetY})
);`,
$element.getWebElement()
)

最新更新