Selenium WebDriver和Java Robot Class

时间:2014-05-28 13:36:53

标签: java selenium selenium-webdriver awtrobot

我想使用Java Robot类将鼠标移到链接上以动态创建更多内容。对于Web交互,我使用Selenium WebDriver。

    Point coordinates = driver.findElement(By.xpath("//li[@id='1234']/a")).getLocation();
    Robot robot;
    try {
        robot = new Robot();
        robot.mouseMove(coordinates.getX(),coordinates.getY()+120);
    } catch (AWTException e1) {
        e1.printStackTrace();
    }

Selenium会为getLocation函数抛出错误:

Exception in thread "main" org.openqa.selenium.WebDriverException: Cannot determine size of element

有人知道我做错了什么吗?

3 个答案:

答案 0 :(得分:1)

鼠标悬停操作,您可以在不使用Robot的情况下实现(Actions类)。

new Actions(driver).moveToElement(driver.findElement(By.xpath("//li[@id='1234']/a"))).perform();

在您的文件中包含以下import语句。

import org.openqa.selenium.interactions.Actions;

答案 1 :(得分:1)

如果您只想在页面上进行鼠标移动,Selenium交互可以帮助您做同样的事情。

以下是您的示例代码

WebElement myLink = driver.findElement(By.xpath("//li[@id='1234']/a"));

Actions act = new Actions(driver);
act.moveToElement(myLink).build().perform();

// if you want to click on the link : 
act.click(myLink).build().perform();

// if you want to move to the element and then click onthe link : 
act.moveToElement(myLink).click(myLink).build().perform();

// or can be done in two different steps like this : 
act = act.moveToElement(myLink);
act.click(myLink).build().perform()

为此,我们应该导入 org.openqa.selenium.interactions.Actions;

希望这能解决您的问题。

答案 2 :(得分:0)

我尝试了这个,它似乎对我有用。请检查

Point p = webele.getLocation();
int x = p.getX();
int y = p.getY();
Dimension d = webele.getSize();
int h = d.getHeight();
int w = d.getWidth();
Robot r = new Robot();
r.mouseMove(x + (w/2), y+(h/2) +80);