我想使用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
有人知道我做错了什么吗?
答案 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);