如何解决moveToElement 不会触发鼠标悬停事件
问题与测试此 sortable list 插件有关。我需要将光标移动到元素 A 然后点击并按住(拖动)这个元素并移动到另一个元素 B。然后等待一秒钟,然后释放拖动的元素 A。第二个元素 B 应该为拖动的元素打开一个新的占位符A.
问题是元素 B 应该知道光标在它上面并且应该打开占位符。但它没有反应。元素 B 侦听鼠标移动事件,但我不确定 movetoElement()
是否会触发此事件。我有一个工作正常但没有打开占位符的代码。
public void dragSubcategoryOutOfParentCategory(String parentCategoryText,String subCategoryText)
{
Actions actions = new Actions(WebDriverRunner.getWebDriver());
SelenideElement parentCategory = $$("#main .sortable li").get(0);
SelenideElement subCategory = parentCategory.find("ul li");
HashMap<String,Integer> parentTopLeftOffset = getElementTopLeftOffset(parentCategory);
HashMap<String,Integer> subCategoryTopLeftOffset = getElementTopLeftOffset(subCategory);
// Move cursor to top left corner
actions.movetoElement(subCategory,subCategoryTopLeftOffset.get("x"),subCategoryTopLeftOffset.get("y")).perform();
actions.clickAndHold().perform();
// Move cursor to top left corner + 3px
actions.movetoElement(parentCategory,parentTopLeftOffset.get("x") + 3,parentTopLeftOffset.get("y") + 3).perform();
sleep(5000);
actions.release().build().perform();
}
这是我想要的截图
这是我的截图
解决方法
当我写这个问题时,我试图通过元素 B 上的小步模拟 mousemove 事件并且它起作用了。所以代码现在看起来像:
public void dragSubcategoryOutOfParentCategory(String parentCategoryText,String childCategoryText)
{
Actions actions = new Actions(WebDriverRunner.getWebDriver());
SelenideElement parentCategory = $$("#main .sortable li").get(0);
SelenideElement childCategory = parentCategory.find("ul li");
HashMap<String,Integer> parentTopLeftOffset = getElementTopLeftOffset(parentCategory);
HashMap<String,Integer> childTopLeftOffset = getElementTopLeftOffset(childCategory);
actions.moveToElement(childCategory,childTopLeftOffset.get("x"),childTopLeftOffset.get("y")).perform();
actions.clickAndHold().perform();
actions.moveToElement(parentCategory,parentTopLeftOffset.get("x") + 4,parentTopLeftOffset.get("y") + 4).perform();
// Needs to simulate mousemove over the parent element,// otherwise it does not open new hint holder.
sleep(250);
actions.moveToElement(parentCategory,parentTopLeftOffset.get("x") + 3,parentTopLeftOffset.get("y") + 3).perform();
sleep(250);
actions.moveToElement(parentCategory,parentTopLeftOffset.get("x") + 2,parentTopLeftOffset.get("y") + 2).perform();
sleep(1000);
actions.release().build().perform();
sleep(5000);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。