Selenium Webdriver将鼠标从一个点移动到另一个点

时间:2019-04-08 16:33:52

标签: c# selenium selenium-webdriver selenium-chromedriver

我想使用硒和铬驱动程序将鼠标从网页上的A点(随机)移动到B点(一个元素)。

就像模拟鼠标移动一样,而不仅仅是从一个点跳到另一点。

我同时具有起始位置和目标元素的坐标。

不幸的是,似乎没有将光标移动到特定点的方法,看来我的选择是MoveToElementmoveByOffset。两者都可使用偏移量,因此您只能与要单击的元素移动一定距离。

移动光标

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目标目标或目标元素处于焦点为止。

我感觉自己拥有了所有需要的坐标和方法,但是到目前为止,我试图将所有这些坐标和方法放在一起的尝试都失败了。

0 个答案:

没有答案