我正在尝试拖放一个元素,但我无法在所需位置释放该元素。
问题是:我想将元素放在仅在运行时可见的占位符中(即:当我clickAndHold元素并移动到目标元素时) 移动到目标元素后,占位符被激活,我应该释放该元素。
这是我的代码:(在FirefoxDriver初始化之后)
String sourceelement ="#ctl00_ctl44_g_0beb5998_7319_49ac_9956_28684e341659_dvCart img";
String destinationelement = "#dvZone_LeftColumn";
Actions builder = new Actions(driver);
builder.clickAndHold(driver.findElement(By.cssSelector(sourceelement)));
builder.moveToElement(driver.findElement(By.cssSelector(destinationelement)));
builder.perform();
Thread.sleep(250);
WebElement holder = driver.findElement(By.className("placeholder"));
builder.release(holder).perform();
这是HTML源代码段(发布元素部分):
“”在任何“”下激活,具体取决于我拖动后该元素的位置。
问题:
1 - 在执行脚本时,如果我移动鼠标而不是在占位符中释放元素那么成功执行(但必须在那时移动鼠标以释放占位符中的元素,这不应该在自动化中完成)< / p>
2 - 如果我不移动鼠标,则脚本无法说“找不到带有classname = placeholder的元素”
请帮忙
提前致谢
答案 0 :(得分:0)
只有在按住target
并移动鼠标时,您的source
占位符才会生效。
我建议您首先单击并按住source
元素并将其移动一定的偏移量,这将使您的目标占位符可见。通过这种方式,您可以确保您没有&#34;无法找到classname =占位符&#34; 错误的元素。
String sourceelement ="#ctl00_ctl44_g_0beb5998_7319_49ac_9956_28684e341659_dvCart img";
String destinationelement = "#dvZone_LeftColumn";
Actions builder = new Actions(_driver);
builder.clickAndHold(_driver.findElement(By.cssSelector(sourceelement)));
builder.moveByOffset(1, 1).perform();// this will move the mouse by 1,1 which will be holding your source element
builder.moveToElement(_driver.findElement(By.cssSelector(destinationelement)));
builder.perform();
Thread.sleep(250);
WebElement holder = _driver.findElement(By.className("placeholder"));
builder.release(holder).perform();