Selenium WebDriver mouseMove在NodeJS中移动变量

时间:2018-12-17 17:00:53

标签: node.js selenium webdriver action

在执行我的方法之一mouseMove()时,我遇到了一个非常愚蠢的问题。 借助于mouseMove()方法,我可以将光标移动到特定位置。 只要我这样写,一切都会很好:

await actionSeq.mouseMove({x: 400, y: 400});

但是如果我使用类似的东西:

await actionSeq.mouseMove({x: posX, y: posY});

我的代码停止工作或说得更好,光标没有重新定位在正确的位置。 我的代码如下所示:

try {
       await driver.get('http://192.168.1.12:8080/');
       await driver.wait(until.titleIs('Rocket Man'), 10000);
       await driver.wait(until.elementLocated(By.id('fakeBtn')), 10000);
       await driver.sleep(3000);
       var rect = await 
       driver.findElement(By.id('fakeBtn')).getRect().then((pos) => { 
          return pos;
       });
       let res = await driver.findElement(By.id('dataHolder')).getText().then(result => {
          return JSON.parse(result);
       });

       let xOffset123 = ((rect.x / res.scale) - rect.x) + 10;
       let yOffset123 = ((rect.y / res.scale) - rect.y) + 10;
       posX = ((rect.x / res.scale)) + 10;
       posY = ((rect.y / res.scale)) + 10;
       await leg2.mouseMove({x: posX, y: posY}, {x: 0, y: 0}).mouseDown().mouseUp()
                 .perform().then(res => { console.log('click') });

       await driver.sleep(3500);
    } finally {
                 await driver.quit();
    }

为什么我不能使用预先计算的变量来定位?一旦输入固定值(x:400,y:500),它就会按预期工作,但是我确实需要一种能够使用变量的方法。有人知道该怎么办吗?

0 个答案:

没有答案