我对WebDriver操作的机制感兴趣。 例如
var actions = new Actions(driver);
var action = actions.MoveToElement(element).Build();
action.Perform();
MoveToElement()方法的工作原理是什么?它是javascript的包装器吗? 如果是,是否可以获得此javascript代码?
答案 0 :(得分:1)
所以 - 我自己对机制很感兴趣,所以我看了一下硒源,我的决心是 - 不。它不使用javascript。它使用Java的能力来读取/移动鼠标位置/键盘驱动程序/等,然后当你调用perform()
时,它有一个Actions
的队列,然后它会执行。
答案 1 :(得分:1)
moveToElement是基于坐标实现的。 以下是moveToElement的代码如下
public Actions moveToElement(WebElement toElement) {
this.action.addAction(new MoveMouseAction(this.mouse,
(Locatable) toElement));
return this;
}
public abstract interface Locatable {
public abstract Coordinates getCoordinates();
}
public class MoveMouseAction extends MouseAction implements Action {
public MoveMouseAction(Mouse mouse, Locatable locationProvider) {
super(mouse, locationProvider);
if (locationProvider == null)
throw new IllegalArgumentException(
"Must provide a location for a move action.");
}
public void perform() {
this.mouse.mouseMove(getActionLocation());
}
}
答案 2 :(得分:0)
没有javascript。它使用坐标在那里移动鼠标。查看this链接。