以下代码在Firefox中有效,但在Chrome中不起作用。从网上可以找到的内容来看,Actions.DragAndDrop似乎不适用于Chrome。我正在尝试移动SVG元素。
还有其他选择吗?
var action = new Actions(driver);
action
.DragAndDropToOffset(middle, 100, 100)
.Build()
.Perform();
Selenium.Webdriver:v3.141.0
Selenium.Webdriver.ChromeDriver:v76.0.3809.68
Selenium.Firefox.Webdriver:v0.24.0
Chrome:版本76.0.3809.100(正式版本)(64位)
答案 0 :(得分:0)
这就是我在Chrome中使用的功能。请记住,使用拖放操作时,您需要单击一个开始元素,然后单击要放置的第二个元素。
致电:
var ele1 = Driver.FindElement(By.Xpath("//button[@class='cz2__images__image-content cz2__images--draggable']"));
var ele2 = Driver.FindElement(By.Xpath("//button[@class='Destination']"));
DragAndDrop(ele1, ele2);
方法:
public static void DragAndDrop(IWebElement element1, IWebElement element2)
{
WaitForElementEnabled(element1);
WaitForElementEnabled(element2);
var builder = new Actions(Driver);
var dragAndDrop = builder.ClickAndHold(element1).MoveToElement(element2).Release(element2).Build();
dragAndDrop.Perform();
}
或....
public static void test ()
{
var test1 = _webDriver.FindElement(By.Id("myid"));
var test2 = _webDriver.FindElement(By.Id("myid2"));
Actions builder1 = new Actions(_webDriver);
IAction dragAndDrop1 = builder1.ClickAndHold(test1).MoveToElement(test2).Release(test2).Build();
dragAndDrop1.Perform();
}
答案 1 :(得分:0)
public void DragAndDropItem(IWebElement from, IWebElement to)
{
Actions action = new Actions(_driver);
action.DragAndDrop(from, to).Build().Perform();
}