Protractor 鼠标移动到元素并从该元素向下滚动100像素
我有以下测试页- 我想去数字15,从数字上再向下滚动100像素。是否可以仅使用量角器进行此操作。我可以用JavaScript执行它,但最好只使用量角器操作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.
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()
)