C# Selenium webdriver将鼠标从一点移动到另一点
我想使用selenium和chrome驱动程序将鼠标从网页上的A点(随机)移动到B点(元素) 模拟鼠标移动而不是从一点跳到另一点 我有起始位置和目标元素的坐标 不幸的是,似乎没有办法将光标移动到特定点,我的选项似乎是C# Selenium webdriver将鼠标从一点移动到另一点,c#,selenium,selenium-webdriver,selenium-chromedriver,C#,Selenium,Selenium Webdriver,Selenium Chromedriver,我想使用selenium和chrome驱动程序将鼠标从网页上的A点(随机)移动到B点(元素) 模拟鼠标移动而不是从一点跳到另一点 我有起始位置和目标元素的坐标 不幸的是,似乎没有办法将光标移动到特定点,我的选项似乎是MoveToElement和moveByOffset。这两种方法都使用偏移,因此您只能从尝试单击的图元移动一定距离 移动光标 Actions builder = new Actions(driver); builder.MoveToElement(element, offsetX,
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目标或目标元素处于焦点
我觉得我已经掌握了我需要的所有坐标和方法,但我尝试将这些坐标和方法放在一起的尝试到目前为止都以惨败告终。我觉得这可能有助于一些人了解您试图在页面上模拟真实鼠标拖动的原因。这是在测试HTML5游戏还是交互式控件?作为一种解决方法,您可以计算起始位置和目标位置之间的某些点,这样您就可以编写自己的方法,逐步重新定位鼠标。我觉得这可能有助于了解您试图在页面上模拟真实鼠标拖动的原因。这是在测试HTML5游戏还是交互式控件?作为一种解决方法,您可以计算起始位置和目标位置之间的某些点,这样您就可以编写自己的方法,逐步重新定位鼠标。