如何使用Selenium Webdriver JavaScript移动鼠标指针并单击?

时间:2018-12-17 20:01:09

标签: javascript selenium selenium-webdriver selenium-chromedriver

我是硒的新手,我在执行简单任务时遇到了问题。

我试图将鼠标移到页面中的特定区域(x,y坐标),然后单击,但没有成功。我确实阅读了文档,由于使用了chromewebdriver,因此我正在使用{bridge: true}

这是我的代码:

var webdriver = require('selenium-webdriver'),
  By = webdriver.By,
  until = webdriver.until,
  Origin = webdriver;


var driver = new webdriver.Builder()
  .forBrowser('chrome')
  .build();


driver.get('http://www.localhost:4000/');

var actions = driver.actions({ bridge: true });

actions.mouse().move({x: 400, y: 1100, duration: 2000, origin: Origin.VIEWPORT});

另一个问题。我知道有第四个参数 origin origin: Origin.VIEWPORT,但是,我不知道我是否正确导入了它。

由于我没有任何选定的元素,因此我也不知道如何触发click事件。我要单击鼠标的最终位置。

3 个答案:

答案 0 :(得分:0)

似乎您缺少.perform();

执行此操作的经典方法是使用Protractor

 // Instead of specifying an element as the target, you can specify an offset
// in pixels. This example double-clicks slightly to the right of an element.
browser.actions().
    mouseMove(element).
    mouseMove({x: 50, y: 0}).
    doubleClick().
    perform();

您可以将mouseMove用作body元素的x y。

希望这对您有帮助!

编辑

如果这对您不起作用,请尝试以下操作:

browser.actions() .mouseMove(element, { x: 20, y: 75, }) .perform().then(() => browser.actions() .click() .perform());

答案 1 :(得分:0)

对我有用

//定位一個按鈕
WebElement button = driver.findElement(By.xpath("//div[@class='page-button']"));
//new 一個移動滑鼠的物件
Actions clickAction = new Actions(driver).click(button);
//執行
clickAction.build().perform();

答案 2 :(得分:-1)

WebDriver driver = new FirefoxDriver();
JavascriptExecutor scpt = (JavascriptExecutor)driver;
scpt.executeScript("document.getElementById('[insert id]').click();");

确保您添加了一个计时器休眠,以便它可以加载页面,然后可以随后单击,因此请使用Thread.Sleep();