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

Protractor 鼠标移动到元素并从该元素向下滚动100像素,protractor,Protractor,我有以下测试页- 我想去数字15,从数字上再向下滚动100像素。是否可以仅使用量角器进行此操作。我可以用JavaScript执行它,但最好只使用量角器操作 it('Test MouseMove', async (done) => { await browser.waitForAngularEnabled(false); await browser.get('https://testnewsnippetcom.000webhostapp.com/test_scroll.

我有以下测试页-

我想去数字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像素。

理论上这应该是可能的。这是官方的例子

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

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);
我还没有机会测试它。。。因为我是这样做的(你不想利用)


我想这是意料之中的,因为它只是移动鼠标
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()
    )