Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MoveToElement不';t鼠标悬停并按住某个元素上的单击按钮_Java_Selenium_Selenium Webdriver - Fatal编程技术网

Java MoveToElement不';t鼠标悬停并按住某个元素上的单击按钮

Java MoveToElement不';t鼠标悬停并按住某个元素上的单击按钮,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,以下是该页面的示例HTML代码: 我尝试使用以下xpath将鼠标悬停在元素上: WebElement Bar1 = dvr.findElement(By.xpath("//div[@class='barModel']/div[@class='model']/canvas[@class='segment']"))); 下面是代码 act = new Action (driver); act.moveToElement(Bar1).build().perform(); act.clickAndH

以下是该页面的示例HTML代码:

我尝试使用以下xpath将鼠标悬停在元素上:

WebElement Bar1 = dvr.findElement(By.xpath("//div[@class='barModel']/div[@class='model']/canvas[@class='segment']")));
下面是代码

act = new Action (driver);
act.moveToElement(Bar1).build().perform();
act.clickAndHold();

我的目标是拖动元素。运行上述代码不会产生任何错误,但页面上没有可见的交互。我可以使用Robot类完成这项任务,但我只是想通过Action类实现这项任务。

您没有执行clickAndHold操作:

act = new Action (driver);
act.moveToElement(Bar1).build().perform();
act.clickAndHold().perform();
如果要拖放元素,只需使用内置函数:

act.dragAndDrop(movedElement, targetElement).perform();

您没有执行clickAndHold操作:

act = new Action (driver);
act.moveToElement(Bar1).build().perform();
act.clickAndHold().perform();
如果要拖放元素,只需使用内置函数:

act.dragAndDrop(movedElement, targetElement).perform();

您可以使用
JavaScriptExecutor
执行
mouseover
,如下所示:-

JavascriptExecutor js = (JavascriptExecutor) dvr;
js.executeScript("var clickEvent = document.createEvent('MouseEvents');clickEvent.initEvent('mouseover', true, true); arguments[0].dispatchEvent(clickEvent);", Bar1);
通过使用上面的
Java脚本
,您可以执行
mouseover
。现在您可以使用
dragandrop
移动元素,如下所示:-

Actions action = new Actions(dvr)
action.dragAndDrop(sourceElement, destinationElement).build().perform()

希望它能帮助您……:)

您可以使用
JavaScriptExecutor
执行
mouseover
,如下所示:-

JavascriptExecutor js = (JavascriptExecutor) dvr;
js.executeScript("var clickEvent = document.createEvent('MouseEvents');clickEvent.initEvent('mouseover', true, true); arguments[0].dispatchEvent(clickEvent);", Bar1);
通过使用上面的
Java脚本
,您可以执行
mouseover
。现在您可以使用
dragandrop
移动元素,如下所示:-

Actions action = new Actions(dvr)
action.dragAndDrop(sourceElement, destinationElement).build().perform()


希望它能帮助您……:)

我也尝试过这样做,但屏幕上看不到鼠标动作。我不能使用dragAndDrop方法的原因是因为只有元素的一部分是可拖动的。因此,首先,我必须将鼠标悬停在该区域上,然后拖动它。您确定手动操作时有可见的操作吗?确保不要移动鼠标,手动检查时仅“单击并按住”是的,我可以将鼠标悬停在元素的可拖动部分(此时鼠标光标会发生变化),单击并按住然后拖动我也尝试过使用act.moveToElement(toElement,xOffset,YoOffset),但即使这样,鼠标悬停也不起作用。通过使用element.getLocation().getX()获得X和Y坐标;和元素.getLocation().getY();请注意,在测试脚本运行时,您看不到光标,因此无法看到光标的更改。我建议您尝试这段代码,您将看到元素是否移动:尝试了这段代码,但鼠标没有移动。我还做了elementFarfromBar1.click();只是验证的附加步骤。它被点击了,但鼠标并没有停在那个上面。我也试过这么做,但在屏幕上并没有看到鼠标的动作。我不能使用dragAndDrop方法的原因是因为只有元素的一部分是可拖动的。因此,首先,我必须将鼠标悬停在该区域上,然后拖动它。您确定手动操作时有可见的操作吗?确保不要移动鼠标,手动检查时仅“单击并按住”是的,我可以将鼠标悬停在元素的可拖动部分(此时鼠标光标会发生变化),单击并按住然后拖动我也尝试过使用act.moveToElement(toElement,xOffset,YoOffset),但即使这样,鼠标悬停也不起作用。通过使用element.getLocation().getX()获得X和Y坐标;和元素.getLocation().getY();请注意,在测试脚本运行时,您看不到光标,因此无法看到光标的更改。我建议您尝试这段代码,您将看到元素是否移动:尝试了这段代码,但鼠标没有移动。我还做了elementFarfromBar1.click();只是验证的附加步骤。它被点击了,但鼠标没有悬停在上面。我想你不能链接我们能看到的页面或类似页面?是的,我不能这样做,因为隐私的原因。尽管我可以粘贴你想要的任何其他HTML代码段,但canvas标签是一个HTML画布,可以在其中显示各种内容。你是想抓住里面的东西还是整件事?通常单击()等,然后转到元素的中心,您正在讨论的画布相当大。。。467x43。您可能必须使用其中一种偏移方法来磨练您想要的。你能发布canvas元素的截图以及你想做什么吗?该元素是一个矩形条。我试着点击它的右外缘,因为它只能从这一点拖动。在从ele.getLocation().getX()获取坐标后,我尝试使用act.moveByOffset(xOffset,yOffset);和ele.getLocation().getY();但得到的坐标不正确。我的第一个想法是,我面临这个问题,因为这是一个画布,但问题是页面上的任何其他元素我不认为你可以链接页面或我们可以看到的类似页面?是的,我不能这样做,因为隐私的原因。尽管我可以粘贴你想要的任何其他HTML代码段,但canvas标签是一个HTML画布,可以在其中显示各种内容。你是想抓住里面的东西还是整件事?通常单击()等,然后转到元素的中心,您正在讨论的画布相当大。。。467x43。您可能必须使用其中一种偏移方法来磨练您想要的。你能发布canvas元素的截图以及你想做什么吗?该元素是一个矩形条。我试着点击它的右外缘,因为它只能从这一点拖动。在从ele.getLocation().getX()获取坐标后,我尝试使用act.moveByOffset(xOffset,yOffset);和ele.getLocation().getY();但得到的坐标不正确。我的第一个想法是,我面临这个问题,因为它是一个画布,但事实证明,问题在于页面上的任何其他元素