我想使用硒和铬驱动程序将鼠标从网页上的A点(随机)移动到B点(一个元素)。
就像模拟鼠标移动一样,而不仅仅是从一个点跳到另一点。
我同时具有起始位置和目标元素的坐标。
不幸的是,似乎没有将光标移动到特定点的方法,看来我的选择是MoveToElement
和moveByOffset
。两者都可使用偏移量,因此您只能与要单击的元素移动一定距离。
移动光标
Actions builder = new Actions(driver);
builder.MoveToElement(element, offsetX, offsetY).Perform();
我正在使用以下代码获取起始位置/坐标和当前坐标
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("mousePosX = 0; mousePosY = 0; onmousemove = function(e){ mousePosX = e.clientX; mousePosY = e.clientY; console.log('Y:' + mousePosY + ' X:' + mousePosX); }; ");
IWebElement currentElement = driver.SwitchTo().ActiveElement();
builder.MoveToElement(currentElement, randomStartX, randomStartY).Perform();
int mousePosX = convertJSMousePos(driver.ExecuteScript("return mousePosX;"));
int mousePosY = convertJSMousePos(driver.ExecuteScript("return mousePosY;"));
获取目标坐标
IWebElement link = driver.FindElement(By.LinkText("more info"));
System.Drawing.Point location = link.Location;
int targetXPostion = location.X;
int targetYPostion = location.Y;
我知道解决方案将是一个逐步减少偏移量的循环,直到到达X / Y目标目标或目标元素处于焦点为止。
我感觉自己拥有了所有需要的坐标和方法,但是到目前为止,我试图将所有这些坐标和方法放在一起的尝试都失败了。