【问题标题】:How WebDriver Actions worksWebDriver 操作的工作原理
【发布时间】:2013-12-30 23:06:25
【问题描述】:
我对 WebDriver 操作的机制很感兴趣。
例如
var actions = new Actions(driver);
var action = actions.MoveToElement(element).Build();
action.Perform();
MoveToElement() 方法如何工作?它是javascript的包装器吗?
如果是,是否有可能获取此 javascript 代码?
【问题讨论】:
标签:
javascript
selenium
automation
webdriver
【解决方案1】:
所以 - 我自己其实对机制很好奇,所以我查看了硒源,我的决定是 - 不。它不使用javascript。它使用 Java 读取/移动鼠标位置/键盘驱动程序等的能力,然后当您调用 perform() 时,它会执行一个 Actions 队列。
【解决方案2】:
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());
}
}
【解决方案3】:
没有 JavaScript。它使用坐标将鼠标移动到那里。检查this链接。